본문 바로가기
IT/Java

자바 this 알아보기

by flatsun 2019. 1. 19.
반응형




이번에는 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

댓글