-
[JAVA 공부 5일차] 객체지향 Part 3Development/JAVA 2022. 7. 27. 09:20728x90반응형
1. 변수의 초기화
- 지역 변수는 꼭 사용 전에 수동 초기화해주어야 한다.
- 인스턴스 변수, 클래스 변수(static 변수)의 경우 자동 초기화가 된다.
- int, long, short, byte, float, double 타입의 경우 타입에 맞게 0으로 초기화된다.
- boolean 타입의 경우 false로 초기화된다.
- char 타입의 경우 '\u0000' (공백 1칸)으로 초기화된다.
- 참조형 변수는 null로 초기화된다.
1. 명식적 초기화 ( = )
간단한 초기화할 때 많이 사용된다.
class Car{ int door = 4; // 기본형 변수의 초기화 Engine e = new Engine(); // 참조형 변수의 초기화 }2. 초기화 블록
복잡한 초기화를 할 때 많이 사용된다.
인스턴스 초기화 블록 : { }는 잘 사용되지 않는다. 인스턴스의 복잡한 초기화의 경우 생성자를 사용한다.
클래스 초기화 블록 : static { }
class StaticBlockTest{ static int[] arr = new int[10]; // 명시적 초기화 static{ // 클리스 초기화 블록 for (int i = 0; i < arr.length; i++){ arr[i] = (int)(Math.random()*10)+1; } } }3. 생성자
인스턴스 변수를 초기화할 때 사용되며 복잡한 초기화에도 사용된다.
Car(String color, String gearType, int door){ this.color = color; this.gearType = gearType; this.door = door; }2. 최종 정리
클래스 변수 초기화 시점은 클래스가 처음 로딩될 때 단 한 번이다.
- 로딩이란 class파일을 RAM에 올리는 과정을 의미한다.
인스턴스 변수 초기화 시점은 인스턴스가 생성될 때마다 초기화된다.
초기화 순서는 클래스 변수가 먼저 초기화되고 그 이후 인스턴스 변수가 초기화된다.
여러 개의 인스턴스를 만들어도 클래스 변수는 최초 로딩 시에 단 한번 초기화되고 그 이후로는 초기화되지 않는다.
class initTest{ static int cv = 1; // 1 명시적 초기화 (간단) int iv = 1; // 2 명시적 초기화 (간단) static { // 3 클래스 초기화 블록 ( 클래스 초기화 복잡 ) cv = 2; } initTest(){ // 4 생성자( 인스턴스 초기화 복잡 ) iv = 3; } }실행 순서
- static 변수 cv 0으로 자동 초기화
- static 변수 cv에 1로 명식적 초기화(간단)
- static 변수 cv에 2로 클래스 초기화 블록 사용 (복잡)
- 인스턴스 변수 iv 0으로 자동 초기화
- 인스턴스 변수 iv에 1로 명시적 초기화(간단)
- 인스턴스 변수 iv에 3으로 생성자 사용(복잡)
- 초기화 끝
728x90반응형'Development > JAVA' 카테고리의 다른 글
[JAVA 공부 6일차] static, final, abstract, 접근 제어자 알아보기 (0) 2022.07.27 [JAVA 공부 6일차] 객체지향 Part 4 (0) 2022.07.27 [JAVA 복습] 객체지향, 배열, 연산 (1) 2022.07.26 [JAVA 공부 4일차] 객체지향 Part 2 (1) 2022.07.26 [JAVA 공부 3일차] 객체지향 Part 1 (0) 2022.07.25