static 블록을 알아보기 전에 Static이 무엇인지에 대해 알아보겠습니다.
Static
자바에서는 Static 키워드를 사용하여 정적 변수, 정적 메서드를 만들 수 있습니다. 이 둘을 묶어서 정적 멤버라고 불립니다.
Static은 JVM 런타임 데이터 영역 메서드 영역 중 Static 영역에 할당이 됩니다.
Static 영역에 할당된 값들은 모든 객체가 공유하여 어디서든지 참조할 수 있습니다.
그리고 프로그램이 시작될 때 메모리에 할당이 되는데, Static 영역은 가비지 컬렉터 관리 밖에 존재하여서 프로그램이 종료될 때까지 메모리에 할당된 채로 존재합니다.
그래서 무분별하기 사용할 경우 문제가 발생할 수 있습니다.
static 블록과 생성자는 각각 클래스와 인스턴스의 초기화를 다루는데 사용되며, 그들의 주요 차이점은 다음과 같습니다.
1. Static 블록
- static 블록은 클래스가 로딩될 때 실행되는 블록입니다. 클래스가 사용되기 전에 단 한번만 실행됩니다.
- static 블록은 클래스 수준의 작업에 사용되며, 주로 클래스 변수 (static 변수)의 초기화나 클래스 수준의 초기화 작업을 수행할 때 활용됩니다.
- static 블록은 인스턴스와 무관하게 클래스 로딩 시에 실행됩니다.
public class MyClass {
// static 변수
private static int staticVariable;
// static 블록
static {
System.out.println("Static block is executed.");
staticVariable = 42;
}
}
Static Block가 메모리에 할당되는 시점 (클래스 로딩 시점)
- 클래스를 인스턴화 할 때
- 정적 변수 사용할 때
- 정적 메서드 사용할 때
2. 생성자
- 생성자는 인스턴스가 생성될 때마다 호출되는 특별한 메서드로, 해당 인스턴스의 초기화 작업을 수행합니다.
- 생성자는 인스턴스 레벨의 작업에 사용되며, 인스턴스 변수의 초기화나 특정 작업을 수행하는 데 활용됩니다.
- 생성자는 객체가 생성될 때마다 호출되기 때문에 인스턴스 변수에 대한 초기화는 보통 생성자에서 이루어집니다.
public class MyClass {
// 인스턴스 변수
private int instanceVariable;
// 생성자
public MyClass(int initialValue) {
System.out.println("Constructor is called.");
this.instanceVariable = initialValue;
}
}
참고자료
https://perfect-dev.tistory.com/12
[Java] 자바에서 생성자와 static 블럭의 차이점
static 블록과 생성자는 각각 클래스와 인스턴스의 초기화를 다루는데 사용되며, 그들의 주요 차이점은 다음과 같습니다. 1. Static 블록: static 블록은 클래스가 로딩될 때 실행되는 블록입니다. 클
perfect-dev.tistory.com
https://hoestory.tistory.com/71
[Java] Static Block 실행 시점
들어가기 전 이번 포스팅에서는 자바에 있는 Static Block이 어떤 시점에 실행이 되는지에 대해 알아보겠습니다. Static Block은 아래와 같이 코드를 작성해 주시면 됩니다. public class StaticBlock { static {
hoestory.tistory.com
'Java' 카테고리의 다른 글
[Java] Throwable vs Error vs Exception 그리고 예외 처리 전략 (0) | 2025.01.14 |
---|---|
[Java] Weak Refrence란? (0) | 2024.12.17 |
[Java] 기본타입 vs 참조타입 (1) | 2024.06.10 |
[Java] 추상 클래스 vs 인터페이스 (0) | 2024.06.10 |
[Java] 오버라이딩 vs 오버로딩 (0) | 2024.06.10 |