(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

자바에서 this는 생성된 인스턴스 스스로를 가리키는 예약어이다.

 

■ this를 통한 멤버 변수 참조

- this 예약어를 통해 멤버 변수임을 명시할 수 있다. this를 사용하지 않더라도 IDE에서 자동으로 구분을 해주지만, this를 사용하여 명시해주면 개발자가 해당 변수를 더 쉽게 파악할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Calculator {
    private int num1;
    private int num2;
    
    public Calculator(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
    }
}
 
public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator(1020);
    }
}
cs

Line 2 : 멤버 변수 num1 선언

Line 3 : 멤버 변수 num2 선언

Line 5 : num1과 num2를 받아오는 생성자

Line 6 : 멤버 변수 num1을 생성자 선언 시 넘겨준 num1의 값으로 초기화

Line 7 : 멤버 변수 num2를 생성자 선언 시 넘겨준 num2의 값으로 초기화

 

■ this를 통한 다른 생성자 호출

- this를 통해 생성자에서 다른 생성자를 호출할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Calculator {
    private int num1;
    private int num2;
    private char ch;
    
    public Calculator(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
        System.out.println("Calculator(int num1, int num2)");
    }
    
    public Calculator(int num1, int num2, char ch) {
        this(num1, num2);
        this.ch = ch;
        System.out.println("Calculator(int num1, int num2, char ch)");
    }
}
 
public class Main {
    public static void main(String[] args) {
        System.out.println("------------ calc1 ------------");
        Calculator calc1 = new Calculator(1020); // Calculator(int num1, int num2)
        
        System.out.println("------------ calc2 ------------");
        Calculator calc2 = new Calculator(1020'+'); // Calculator(int num1, int num2)
                                                        // Calculator(int num1, int num2, char ch)
    }
}
cs

Line 6 : num1과 num2를 받아오는 생성자

Line 12 : num1, num2, ch를 받아오는 생성자

Line 13 : Line 6의 생성자를 호출하여 num1과 num2를 초기화

Line 14 : 멤버 변수 ch 초기화

Line 22 : num1, num2를 매개변수로 전달하는 Line 6의 생성자 호출

Line 25 : num1, num2, ch를 매개변수로 전달하는 Line 12의 생성자 호출

 

■ this를 통한 자신의 주소 반환

- this를 통해 자기 자신의 주소 값을 반환할 수 있다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Calculator {
    private int num1;
    private int num2;
    
    public Calculator(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
    }
    
    public Calculator printAddress() {
        return this;
    }
}
 
public class Main {
    public static void main(String[] args) {
        Calculator calc1 = new Calculator(1020);
        System.out.println(calc1.printAddress()); // Calculator@15db9742
    }
}
cs

Line 10 : 자기 자신의 주소 값을 반환하는 메소드 (반환형을 클래스형으로 만들어야 함)

Line 18 : 생성한 calc1 인스턴스의 주소 값 출력

+ Recent posts