<1> this를 사용해서 지역변수와 멤버변수 구분하기
지역변수 : 클래스의 메소드 안에 있는 변수
멤버변수(전역변수) : 클래스 밑에 정의 되어있는 변수
🖥️ 예시1
class User{
String name; // 전역변수
public void setName(){
String name; // 지역변수
name = "사용자"; // 지역변수 name
this.name = "학생"; // 전역변수 name
}
}
-----------------------------------------------------
* 전역변수와 지역변수가 동일한 이름으로 공존할 경우,
유효성의 범위가 작은 변수가 우선적으로 인식됨
🖥️ 예시2
class User{
String name; // 전역변수(멤버변수)
public void setName(String name) {
this.name = name;
// this.name → 전역변수 name
// name → 지역변수 name(파라미터)
}
}
-----------------------------------------------------
* 파라미터도 해당 메서드 안에서만 유효한 지역변수의 일종
* 파라미터를 사용하여 멤버변수의 값을 간접적으로 설정할 시
→ 변수의 이름은 동일하게 지정하고 this 키워드를 사용하여
멤버변수와 파라미터 구별
* 모든 멤버변수 앞에는 this 키워드를 사용하여 멤버변수임을
직관적으로 표시하는 것이 소스코드의 가독성을 위해서 바람직
<2> 현재 클래스의 메서드를 의미하는 용도로써의 this
class User{
//클래스 내에 정의 되어있는 메서드
public String getName(){
String name = "학생";
return name;
}
public void sayName(){
/*class 내에 정의되어있는 메서드도
this를 사용하여 접근*/
String myname = this.getName();
System.out.println(myname);
}
}
-----------------------------------------------------
* getName()을 호출하는 메서드는 this 키워드를 사용하여
현재 클래스 안에 포함된 다른 메서드임을 명시
* 하지만 메서드의 경우 다른 클래스의 메서드를 이름만으로
호출할 수 있는 방법이 없음
→ this.getName();이 아닌, getName()만 사용하더라도
코드 가독성의 문제는 없기 때문에 잘 사용하지 않음
- 전역변수는 웬만하면
this
를 적어주는 게 좋다.- 메소드에 접근할 때는 굳이 적어줄 필요 없다.