일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- Database
- 알고리즘
- algoritm
- 2156
- SQL
- 10951
- Eclipse
- 변수
- 오라클
- 백준
- 자바
- n x 2 타일링 2
- Algorithm
- Dynamic Programming
- select
- 문자열
- 데이터길이
- 동적계획법
- 입출력
- Java
- 데이터베이스
- 소숫점처리
- oracle
- 반복문
- DP
- db
- 그대로 출력하기
- JOIN
- ANSI JOIN
- darkest dark
Archives
- Today
- Total
Cracking Code
[Java] this 키워드 본문
자바의 this 키워드는 객체 생성 후 메모리에 올라간 자기 자신의 인스턴스를 가리킨다.
this
// 자기 자신의 필드 참조
this.field_name = value
// 자기 자신의 생성자 참조
this(data_type1 field_name1, data_type2 field_name2, ...);
다른 클래스에서 참조 변수명을 사용하여 생성된 인스턴스를 참조할 수 있지만
자기 자신이 자신을 참조할 때는 this 키워드를 사용합니다.
멤버 변수명과 매개 변수명이 같을 경우
일반적으로 setter 메소드를 사용할 때 멤버 변수명과 받는 매개 변수명을 같게 정의합니다.
이러한 경우 🚨변수명이 중복되어 식별이 불가하기 때문에 오류가 발생합니다.
이를 분간하기 위해서 this 키워드를 사용해 자기 자신의 멤버 변수를 가리킵니다.
E.g.
public class ThisClass {
private String string;
public void setString(String string) {
this.string = string;
}
}
String 타입의 매개 변수 string에 담긴 데이터를 String 타입의 멤버 변수 string에 저장합니다.
이를 분간하기 위해서 자기 자신의 멤버 변수인 string 변수는 this 키워드를 사용합니다.
생성자에서 다른 생성자를 호출할 때
생성자의 매개 변수가 여러 개일 때 각각 매개 변수의 수에 맞춰 생성자들을 오버로딩 정의하는 경우가 있습니다.
이러한 경우 this 키워드를 사용해 자기 자신의 생성자를 호출하여 기본값을 임의로 지정해줄 수 있습니다.
E.g.
public class ThisClass {
private String name;
private int age;
// #1 생성자
public ThisClass(String name, int age) {
this.name = name;
this.age = age;
}
// #2 생성자
public ThisClass(String name) {
this(name, 20);
}
// #3 생성자
public ThisClass() {
this("CrackCo");
}
}
1.
기본 생성자인 #3 생성자는 this 키워드를 사용해 #2 생성자를 호출합니다.
#2 생성자는 매개 변수로 String 타입의 데이터를 저장하기 때문에
문자열 데이터 "CrackCo"와 함께 #2 생성자를 호출합니다.
2.
#2 생성자는 this 키워드를 사용해 #1 생성자를 호출합니다.
#1 생성자는 매개 변수로 String 타입의 데이터와 int 타입의 데이터를 저장합니다.
#2 생성자는 String 타입의 데이터를 전달 받아
임의의 데이터 숫자 20과 함께 #1 생성자를 호출합니다.
'Java > Java language' 카테고리의 다른 글
[Java] 메서드 오버라이딩 (Method Overriding) (0) | 2020.08.13 |
---|---|
[Java] 상속 (Inheritance) (0) | 2020.08.12 |
[Java] 생성자 (Constructor) (0) | 2020.08.06 |
[Java] 필드 (Field) (0) | 2020.08.05 |
[Java] Method (메소드) (0) | 2020.08.05 |
Comments