본문 바로가기
언어/Java

static

by 넬준 2022. 5. 10.

 

멤버 필드나 메소드에  static 키워드를 붙이면 정적 멤버가 된다.

정적 멤버는 객체를 생성하지 않고 클래스에 직접 접근할 수 있는 필드와 메소드를 말한다.

정적 멤버가 되면 더 이상 객체가 아닌, 클래스 자체에 소속되기 때문에 클래스 멤버라고도 한다.

 

정적 멤버는 JVM의 class loader가, 자바 컴파일러가 .java 파일을 컴파일한 .class 파일 (바이트 코드)을 JVM이 할당받은 메모리 영역인 Runtime Area에 속한 method area (class area)에 올릴 때 클래스 별로 관리된다.

즉, 정적 멤버에 대한 정보는 method area에 있다.

 

해당 클래스를 바탕으로 만들어질 여러 객체가 공유하고 있을 데이터라면 정적 필드로 선언하고, 객체마다 고유의 값을 가질 데이터라면 인스턴스 필드로 선언한다.

 

인스턴스 필드를 사용하지 않는 메소드라면 정적 메소드로 선언하고, 인스턴스 필드를 가지고 연산을 하는 메소드라면 인스턴스 메소드를 선언한다.

 

초기화

인스턴스 필드는 생성자를 이용해 원하는 값을 초기화할 수 있지만, 정적 필드는 객체를 생성하지 않아도 접근이 가능하기 때문에 생성자를 이용해 초기화를 할 수 없다.

 

따라서 static block을 이용해 복잡한 초기화 작업을 할 수 있다.

 

public class Test {
    static int num1 = 4;
    static int num2 = 7;
    static int num;
    
    static {
        num = num1 + num2 * num2 / num1;
    }
}

 

'언어 > Java' 카테고리의 다른 글

OOP의 특성 - 1. 상속  (0) 2022.05.12
생성자  (1) 2022.05.11
Wrapper Class  (0) 2022.05.10
Class 클래스  (0) 2022.04.01
String Constant Pool  (0) 2022.03.25

댓글