본문 바로가기
Language/JAVA

JAVA :: 자바 문법 정리(5)

by stern07s 2023. 4. 24.
728x90
반응형

JAVA :: 자바 문법 정리(5)

변수의 초기화

멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본갑으로 초기화가 이루어지므로 초기화하지 않고
사용해도 되지만, 지역변수는 사용하기 전에 반드시 초기화해야 한다. (멤버변수(클래스변수와 인스턴스변수)와 배열의 초기화는 선택적이지만, 지역변수의 초기화는 필수적이다.)


멤버변수의 초기화는 지역변수와 달리 여러 가지 방법이 있다.
✔️ 명시적 초기화 : 변수를 선언과 동시에 초기화하는 것
✔️ 생성자
✔️ 초기화 블럭
  👉 인스턴스 초기화 블럭 : 인스턴스변수를 초기화 하는데 사용
  👉 클래스 초기화 블럭 : 클래스 변수를 초기화 하는데 사용

class testClass() {
 static { /* 클래스 초기화 블럭 */ }
 { /* 인스턴스 초기화 블럭 */ }
 // ...
}

클래스 초기화 블럭은 클래스가 메모리에 처음 로딩될 때 한번만 수행되며, 인스턴스 초기화 블럭은 생성자와 같이 인스턴스를 생성할 때 마다 수행된다. (생성자보다 인스턴스 초기화 블럭이 먼저 수행된다.)


인스턴스 변수의 초기화는 주로 생성자를 사용하고, 인스턴스 초기화 블럭은 모든 생성자에서 공통으로 수행돼야 하는 코드를 넣는데 사용한다.


✔️  클래스변수의 초기화 시점 : 클래스가 처음 로딩될 때 단 한번 초기화 된다.
✔️  인스턴스변수의 초기화 시점 : 인스턴스가 생성될 때마다 각 인스턴스별로 초기화가 이루어진다.
✔️  클래스변수의 초기화 순서 : 기본값 -> 명시적초기화 -> 클래스 초기화 블럭
✔️  인스턴스변수의 초기화 순서 : 기본값 -> 명시적초기화 -> 인스턴스 초기화 블럭 -> 생성자


프로그램 실행도중 클래스에 대한 정보가 요구될 때, 클래스에 로딩된다. 하지만, 해당 클래스가 이미 메모리에 로딩되어 있다면, 또 다시 로딩하지 않는다.


클래스의 로딩 시기는 JVM 의 종류에 따라 좀 다를 수 있는데, 클래스가 필요할 때 바로 메모리에 로딩하도록 설계가 되어있는 것도 있고, 실행효율을 높이기 위해서 사용될 클래스들을 프로그램이 시작될 때 미리 로딩하도록 되어있는 것도 있다.

상속

생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다.

반응형

'Language > JAVA' 카테고리의 다른 글

JAVA :: 자바 문법 정리(7)  (0) 2023.04.26
JAVA :: 자바 문법 정리(6)  (0) 2023.04.25
JAVA :: 자바 문법 정리(4)  (0) 2023.04.23
JAVA :: 자바 문법 정리(3)  (0) 2023.04.22
JAVA :: 자바 문법 정리(2)  (0) 2023.04.21

댓글