본문 바로가기
Java

[Java] static 블록과 생성자

by 태크민 2024. 12. 14.

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