객체 자신을 참조하는 주솟값을 다루는 참조 변수의 일종
this는 메서드 내에서만 사용 가능하다.
객체 자신에 대해 참조하는 값을 갖는다. 즉, 자기 자신을 가리킨다.
객체 자신을 메서드에 전달하거나 반환하기 위해 사용한다.
this를 사용하여 모호하지 않고 좀 더 명확한 프로그램을 작성할 수 있다.
class person{
int age = 0;
void changeAge(int age){
age = age;
}
}
위의 코드대로 person.changeAge(20)하면 person.age의 값은 여전히 0이다.
왜냐하면 컴파일러는 person의 인스턴스 변수(멤버 변수)인 age와 매개 변수(parameter) age 중 스택(stack) 내의 데이터 중 가장 가까운 변수인 매개 변수에 먼저 접근해서 값을 읽는다.
그리고 나서 인스턴스 변수 age = 0을 읽고 나서 대입을 한다.
따라서 인스턴스 변수에는 아무런 변화가 일어나지 않아서 age는 0이다.
해결 방법으로는 매개 변수와 인스턴스 변수 서로 다른 이름을 사용하거나 this를 사용한다.
class person{
int age = 0;
void changeAge(int age){
this.age = age;
}
}