이번에는 This가 뭔지에 대해서 한번 알아보자
클래스 내에 변수 i,j가 있고 값은 각각 10, 20이다
그리고 TMethod를 만들어 i,j 값을 받아오면 각각 그 값을 출력하게 했는데
해당 경우에는 TMethod에 각각 1과 2를 넣어 출력하게 했다
근데 막상 출력해 보면 출력값이 어떻게 나올까?
이변은 없었고 각각 1과 2가 출력이 된다
TMethod에 1과 2를 넣어 출력을 시키면
TMethod가 각각 int i와 int j로 인식하기 때문에
클래스 바로 뒤에 정의한
int i = 10;
int j = 20;
과는 관련이 없어 사용되지 않는 것이다
아니 근데 파라미터를 i와 j로 받기 때문에
이러면 클래스에 정의한 int i와 j는 사용이 불가능한가?
그건 아니고
이럴 경우에 this를 쓰면 되는데
메소드 내에서 i와 j 앞에 각각 this. 을 붙였다
근데 파라미터를 i와 j로 받는 만큼
값은 별반 차이가 없어 보이는데..
출력을 한번 해 보자
아닛??
파라미터에 따르면 분명 1,2를 넣었기 때문에
1과 2가 출력되야 하는데 10, 20이 출력이 된다
그렇다면 this의 의미는?
변수명이 동일해도 this를 붙이면
파라미터에서 가져오는 변수값을 사용하는 것이 아니라
클래스 내에서 정의한 변수명을 사용한다는 것이다!
즉 this를 붙임으로써 동일한 변수명이어도
메소드에서 가져오는 파라미터 변수명이 아닌
클래스 내에 정의한 변수명을 사용한다!!
이런 형식의 코드가 학습 시 자주 보게 될 코드인데
아까 배운 내용을 활용해서 i와 j가 어느 값이 나올지 생각을 해 보자
1. 1 / 2 출력
2. 10 / 20 출력
3. 출력이 안되고 에러가 뜬다
답은..
당연하게도 1번인데
먼저 1,2를 넣고 메소드를 부르면
메소드는 1,2를 가지고 안에 내용을 수행하게 되는데
this.i와 j는 각각 10, 20인데
여기에 파라미터로 받아온 i,j를 넣는다고 했으니
각각 this.i에는 1이, this.j에는 2가 들어가게 되고
출력 시 1과 2가 출력되게 되는 것이다
'IT > Java' 카테고리의 다른 글
자바 super 알아보기 (0) | 2019.01.20 |
---|---|
자바 상속 알아보기 (0) | 2019.01.20 |
자바 가변 배열 알아보기 (0) | 2019.01.17 |
자바 3차원 배열 알아보기 (0) | 2019.01.17 |
자바 2차원 배열 알아보기 (0) | 2019.01.16 |
댓글