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

2021. 3. 29. 13:09 JAVA/Java

자바에서 제공하는 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!!

 



출처: https://engkimbs.tistory.com/873?category=790524 [새로비]