Beny's Study
07-1. 필드의 초기화(변수초기화,멤버변수초기화) 본문
필드 초기화 순서
■지역 변수의 경우
-사용하기 전에 반드시 초기화(직접)(메소드안의 변수가 지역변수)
* 멤버변수 초기화 순서)(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 |