this는 객체 자신을 가르키는 레퍼런스 변수로, 자신의 객체에 접근할 때 사용됩니다.
자기 자신의 메모리를 가르킵니다.
생성자에서 다른 생성자를 호출할 경우 사용합니다.
인스턴스 자신의 주소를 반환할 때 사용합니다.
1-1. 자기 자신의 메모리를 가르킵니다.
public class Member {
// 필드
private String memberId;
// getter, setter
public String getMemberId() {
return memberId; // 자신의 주소를 반환한다.
}
public void setMemberId(String memberId) {
this.memberId = memberId; // 필드값을 가르킨다.
}
}
이때, this 키워드를 사용하지 않으면 매개변수 이름과 대입하는 이름이 똑같기 때문에 구분할 수 없어서 에러가 발생합니다.
2-1. 생성자에서 다른 생성자를 호출할 경우 사용합니다.
public class Member {
String memberId;
String memberName;
public Member() {
this("user01", "김이름"); // 하단 생성자 호출
}
public Member(String memberId, String memberName) {
this.memberId = memberId;
this.memberName = memberName;
}
3-1. 인스턴스 자신의 주소를 반환할 때 사용합니다.
public class Member {
private String memberId;
private String membername;
public Member(String memberId, String memberName) {
this.memberId = memberId;
this.memberName = memberName;
}
public Member getMember() {
return this;
}
}
Member 클래스에서 반환 타입을 Member로 설정한 getMember 메소드에서 반환 시 this를 반환합니다.
같은 클래스에서 생성자가 다른 생성자를 호출할 때 사용합니다.
주로 코드의 중복을 줄일 목적으로 사용됩니다.
this()는 생성자 코드에서만 사용할 수 있습니다.
this()는 생성자 코드안에서 사용될 때 첫번째 문장으로 다른 코드보다 가장 윗줄에 위치해야합니다.