남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
생성자 this()
- 생성자에서 다른 생성자 호출할 때 사용
- 다른 생성자 호출시 첫 줄에서만 사용 가능
참조변수 this ( 생성자 this()와 전혀 다름! )
- 인스턴스 자신을 가리키는 참조변수
- 인스턴스 메서드(생성자 포함)에서 사용 가능
- 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용
Car(String c, String g, int d){ // 매개변수는 지역변수 (lv)
color = c;
gearType = g;
door = d; // color, gearType, door 은 인스턴스 변수(iv)이고, 같은 클래스 내에서는 this 생략 가능
}
Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door; // this.color, this.gearType, this.door 은 인스턴스 변수, color, gearType, door는 로컬변수
} //위와 다르게 this가 생략 불가한 이유는 로컬변수와 인스턴스 변수의 이름이 똑같기 때문!
참조변수 this와 생성자 this()
this : 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장, 모든 인스턴스메서드에서 지역변수로 숨겨진 채로 존재
this() , this(매개변수) : 생성자 . 같은 클래스의 다른 생성자 호출할 때 사용 (클래스 이름 대신 this() 사용)
변수의 초기화
- 지역변수(lv)는 수동 초기화 해야함 (사용 전 꼭!!! )
- 멤버변수(iv, cv)는 자동 초기화 된다.
class InitTest{
int x; // 인스턴스 변수
int y = x; // 인스턴스 변수
void method1() {
int i ; // 지역변수
int j= i; // 에러 , 지역변수는 수동 초기화해야함 초기화 하지 않고 사용해서 에러 발생
}
}
자동초기화 되는 자료형과 기본 값
자료형 | 기본 값 |
boolean | false |
char | '\n0000' |
byte, short, int | 0 |
long | 0L |
float | 0f |
double | 0.0d 또는 0.0 |
참조형 | null |
멤머변수의 초기화
1. 명시적 초기화 (=) (간단 초기화)
class Car{
int door = 4; // 기본형 (primitive type) 변수의 초기화
Engine e = new Engine(); // 참조형 (reference type) 변수의 초기화
2. 초기화 블럭 - {} , static{} (복잡 초기화 cv)
- 인스턴스 초기화 블럭 : {}
- 클래스 초기화 블럭 : static {}
3. 생성자 - iv초기화 (복잡 초기화 cv)
Car (String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
멤버변수의 초기화
- 클래스 변수 초기화 시점 : 클래스가 처음 로딩될 때 단 한번 (메모리에 올라갈 때)
- 인스턴스 변수 초기화 시점 : 인스턴스가 생성될 때 마다
class InitTest{
static int cv = 1; // 명시적 초기화
int iv = 1; // 명시적 초기화
static { cv = 2; } // 클래스 초기화 블럭
{ iv = 2; } // 인스턴스 초기화 블럭
InitTest(){ // 생성자
iv = 3;
}
초기화 순서
클래스 변수 > 인스턴스 변수
자동 > 간단 > 복잡
'프로그래밍 > JAVA' 카테고리의 다른 글
자바의 정석 기초 ( 단일상속 / Object 클래스 / 오버라이딩 / 오버로딩 ) (0) | 2020.07.10 |
---|---|
자바의 정석 기초 ( 상속 (Inheritance) / 포함 (composite) ) (0) | 2020.07.10 |
자바의 정석 기초 ( 오버로딩 ) (0) | 2020.07.09 |
자바의 정석 기초 ( 생성자 (constructor)/ 생성자 규칙 / 기본 생성자 (default constructor ) / 매개변수가 있는 생성자 ) (0) | 2020.07.09 |
자바의 정석 기초 ( static 메서드 / instance 메서드 ) (0) | 2020.07.08 |
댓글