프로그래밍/JAVA

(복습) static

Baesj 2021. 10. 4. 16:18

static은 '클래스의' 또는 '공통적인' 의 의미를 가지고 있다.

 

멤버변수

 - 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 된다.

 - 클래스 변수는 인스턴스를 생성하지 않고도 사용 가능하다.

 - 클래스가 메모리에 로드될 때 생성된다.

메서드

 - 인스턴스를 생성하지 않고도 호출이 가능한 클래스 메서드(static 메서드)가 된다.

 - static 메서드 내에서는 인스턴스 멤버(인스턴스 메서드, 인스턴스 변수)들을 직접 사용할 수 없다.

 

사용

 - 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙인다.

 - 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.(메서드 호출시간이 짧아지므로 성능이 향상된다.)

 

class StaticTest {
    String name = "name1"; //멤버변수 - 인스턴스 변수
    static String staticName; //멤버변수 - 클래스 변수

    public void printNum(int num) { //인스턴스 메서드
        System.out.println(num);
    }

    public static void printNum2(int num) { // 클래스 메서드(static 메서드)
        System.out.println(num);
    }

    static { // 초기화 블럭
        staticName = "staticName!";
    }
}

public class ExStatic {
    public static void main(String[] args) {
        System.out.println(StaticTest.staticName); //객체를 생성하지 않아도 사용할 수 있다
        StaticTest.printNum2(11); //객체를 생성하지 않아도 사용할 수 있다

        StaticTest a = new StaticTest();
        System.out.println(a.name); //객체를 생성해야 사용할 수 있다
        a.printNum(10); //객체를 생성해야 사용할 수 있다
    }
}

 

참고 및 출처

 

'프로그래밍 > JAVA' 카테고리의 다른 글

프로세스와 쓰레드 2  (0) 2021.10.02
쓰레드 wait()과 notify()  (0) 2021.09.29
쓰레드의 동기화  (0) 2021.09.27
쓰레드 실행제어  (0) 2021.09.26
쓰레드 상태 및 과정  (0) 2021.09.24