Beny's Study

07-1. 필드의 초기화(변수초기화,멤버변수초기화) 본문

[JAVA]/07. 객체지향

07-1. 필드의 초기화(변수초기화,멤버변수초기화)

76beny 2022. 4. 7. 16:06

필드 초기화 순서

지역 변수의 경우 

-사용하기 전에 반드시 초기화(직접)(메소드안의 변수가 지역변수)

 

 

* 멤버변수 초기화 순서)(iv,Cv)

클래스변수 초기화 후에 인스턴스변수 초기화!

(자동초키과->명시적초기화(간단초기화) ->초기화블럭,생성자(복잡초기화)

클래스 변수의 경우 

-시점 : 클래스가 처음 로딩될때 단 한번

JVM기본값 => 명시적 초기값 => 클래스 초기화 블록 초기값

 

인스턴스 변수의 경우

-시점 : 인스턴스가 생성될 때 마다

JVM기본값 => 명시적 초기값 => 인스턴스 초기화 블록 초기값 => 생성자를 통한 초기값

 

초기화 방법 (4가지)

1. JVM 기본값 초기화
2. 명시적 초기화
3. 초기화 블록을 이용한 초기화
4. 생성자를 이용한 초기화

 

1. JVM기본값 초기화

■ 별도의 초기값을 지정해 주지 않은 경우 JVM에서 자동으로 초기값 설정
 논리형 : false
 정수형 : 0
 실수형 : 0.0
 문자형 : (공백)
 문자열형 : null

 

2. 명시적 초기화(대입연산자 사용)

■ 필드 선언 시 초기값 지정

명시적 초기화 예시

public class VariableExam {
	public boolean var1 = true; // 논리형
	public int var2 = 10; 		// 정수형
	public double var3 = 3.5; 	// 실수형
	public char var4 = 'A’; 	// 문자형
	public String var5 = "Hello"; // 문자열형
}

 

3. 초기화 블록을 이용한 초기화(인스턴스,클래스)

초기화 블럭

인스턴스 블록 ( { } )
인스턴스 변수를 초기화 시키는 블록으로 객체 생성시 마다 초기화


- static(클래스) 블록 ( static{ } )
static 필드를 초기화 시키는 블록으로 프로그램 시작 시 한 번만 초기화

초기화 블럭 표현식

[접근제한자] [예약어] class 클래스명 {
	[접근제한자] static 자료형 필드1;
	[접근제한자] 자료형 필드2;
	static{ 필드1 = 초기값; }
	{ 필드2 = 초기값; }
}

인스턴스 초기화 블럭 예시

public class VariableExam {
	public boolean var1 = true; // 논리형
	public int var2 = 10; 		// 정수형
	public double var3 = 3.5; 	// 실수형
	public char var4 = 'A’; 	// 문자형
	public String var5 = "Hello"; // 문자열형
{
	var1 = false;
	var2 = 20;
	var3 = 5.6;
	var4 = 'B';
	var5 = "안녕하세요";
	}
}

클래스 초기화블럭 예시

public class VariableExam {
	public boolean var1 = true; // 논리형
	public static int var2 = 10; // 정수형
	public double var3 = 3.5; // 실수형
	public char var4 = 'A’; // 문자형
	public String var5 = "Hello"; // 문자열형
	static {
		var2 = 20;
	}
	{
		var1 = false;
		var3 = 5.6;
		var4 = 'B';
		var5 = "안녕하세요";
	}
}

 

4. 생성자를 이용한 초기화

■ 생성자 내부에 초기화 코드를 작성

■ 생성자를 이용한 초기화 예시

public class VariableExam {
	public boolean var1; // 논리형
	public int var2; // 정수형
	public double var3; // 실수형
	public char var4; // 문자형
	public String var5; // 문자열형
	public Variable() {
		var1 = true;
		var2 = 30;
		var3 = 10.5;
		var4 = 'C';
		var5 = "반갑습니다.";
	}
}
Car(String color,String gearType, int door){//매개변수 있는 생성자)
	this.color=color;
    this.gearType=gearType;
    this.door=door;
}

"본 인터넷 사이트 내의 모든 이미지, 문구, 콘텐츠, 내용 등에 대한 저작권은 76beny에게 있습니다.

이를 무단으로 도용, 복사, 전재, 재배포, 2차 변형 등을 할 경우

민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."

 

'[JAVA] > 07. 객체지향' 카테고리의 다른 글

08-1. 메소드 표현식의 종류  (0) 2022.04.07
08. 메소드& 메소드 접근제한자  (0) 2022.04.07
07. 필드 (Field) & 필드 접근제한자  (0) 2022.04.07
06. 클래스 접근제한자  (0) 2022.04.07
05. 캡슐화  (0) 2022.04.07