[자바 프로그래밍] 자바 this를 파헤쳐보자

자바에서 제공하는 this 키워드는 인스턴스 자기 자신를 가리키는 키워드입니다. 이 this 키워드를 통해 클래스 메서드 및 생성자에서 자기 자신의 데이터를 업데이트하거나 조작할 수 있습니다.


여기서 중요한 것은 this 키워드는 이 클래스를 기반으로 생성된 인스턴스를 가리키는 참조라는 사실입니다. 인스턴스를 가르키는 참조와 인스턴스 자체는 다르다는 것을 알아두셨으면 좋겠습니다.


public class ThisExample {

private String name;
private Integer age;
private String address;

public ThisExample() {
this.name = "KBS";
this.age = 19;
this.address = "Seoul";
}

public String getName() {
return name;
}

public Integer getAge() {
return age;
}

public String getAddress() {
return address;
}

public void setName(String name) {
this.name = name;
}

public void setAge(Integer age) {
this.age = age;
}

public void setAddress(String address) {
this.address = address;
}

public ThisExample returnThisExample() {
return this;
}

}

위의 예제는 this 키워드를 이용하여 작성한 전형적인 클래스 코드입니다. this란 키워드를 통해 생성자 및 세터 메서드에서 이 클래스를 기반으로 생성된 인스턴스의 필드 데이터에 접근할 수 있습니다. 


this 키워드는 인스턴스 자기 자신을 가르키는 참조이기 때문에 인스턴스를 참조하는 변수와 비교했을 때 같다라는 결과가 나올 것입니다. 이것을 위의 returnThisExample 메서드를 이용하여 확인해보겠습니다.

public class Main {

public static void main(String[] args) {
ThisExample thisExample = new ThisExample();
System.out.println(thisExample);
System.out.println(thisExample.returnThisExample());

if(thisExample == thisExample.returnThisExample()){
System.out.println("Same!!");
}
else {
System.out.println("Not Same!!");
}
}

}

위에서 thisExample 변수는 ThisExample 클래스를 기반으로 생성된 인스턴스를 가르키는 변수입니다. 여기서 thisExample.returnThisExample 메서드를 호출하여 그 결과를 출력하면 같은 인스턴스를 가리키는 것을 알 수 있습니다.


thisExample과 this 키워드를 반환하는 returnThisExample의 값이 같기 때문에 Same!!이라는 결과가 아래에 출력됩니다.

ThisExample@1540e19d
ThisExample@1540e19d
Same!!



이 글을 공유하기

댓글(0)

Designed by JB FACTORY