자바에는 this와 this() 키워드가 있는데 이 키워드는 전혀 다른 키워드이다.
간단하게 말하자면, this는 인스턴스 자신을 가르키는 참조 변수이고 this()는 생성자를 뜻한다.
참조변수 : 더보기 클릭
# 참조변수란
참조변수(參照變數, reference variable)란 실제 값을 가진 변수가 아니라, 값이 들어가 있는 주소를 가지고 있는 변수를 말한다.
일반적으로 제공 되는 일반 변수는 int , float, long, double 등이다.
즉 값이 저장되는 변수 라고 볼수 있다. 이것을 기본형 함수라고 한다.
참조변수는 보통 클래스들 인데 일반적으로 메모리 공간이 stack 공간과 heap 공간이 존재한다.
그래서 클래스가 Testclass class=new Testclass() 라고 가정할때 class는 참조 변수로써 stack의 공간에서 주소 저장되어 4byte를 저장한다.
그리고 그 참조변수의 주소값을 따라가서 heap 공간에 있는 Testclass()를 찾아갑니다. Testclass의 데이터의 크기는 사용자의 만드는거에 따라 다르다. 즉 참조변수는 주소값을 저장한다고 생각하면 된다.
this
class Car {
String color; // 인스턴스 변수
String gearType;
int door;
Car(String color, String gearType, int door){
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
this 는 위 코드처럼 생성자의 매개변수로 선언된 변수의 이름이 인스턴스 변수와 같을 때 인스턴스 변수와 지역변수를 구분하기 위해서 사용한다.
Car() 생성자 안에서의 this.color는 인스턴스 변수이고, color는 매개변수로 정의된 지역변수이다.
static 메서드에서는 this를 사용하지 못한다.
매개 변수와 인수의 개념은 아래 더보기 클릭
# 생성자
생성자는 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 서브루틴을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 필요에 따라 자원을 할당하기도 한다. 객체의 생성 시에 호출되기 때문에 생성자라는 이름이 붙었다.
# 매개변수와 인수의 개념
- 매개변수
매개변수란 아래의 그림에서 처럼 함수를 정의할 때 사용되는 변수를 의미한다.
- 인수
그렇다면 인수는 무엇일까? 인수는 함수가 호출될 때 매개변수에 실제로 담기는 값을 의미한다.
this()
class Car{
String color; // 인스턴스 변수
String gearType;
int door;
Car(){
this("white", "auto", 4); // Car(String color, string gearType, int door)를 호출
}
Car(String color){
this(color, "auto", 4);
}
Car(String color, String gearType, int door){
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
'⭐ SpringBoot > 문법 정리' 카테고리의 다른 글
List<T> (0) | 2024.05.27 |
---|---|
생성자를 사용해야 하는 이유 (0) | 2022.04.01 |