static

2024. 4. 12. 23:35정보처리,전산/JAVA

반응형

 


■ static 멤버

public class Counter {
    private static int count = 0;

    public static void increment() {
        count++;
    }

    public static int getCount() {
        return count;
    }
}

public class Main {
    public static void main(String[] args) {
        Counter.increment(); // count를 1 증가시킴
        System.out.println("Count using static method: " + Counter.getCount()); // count의 현재 값 출력

        // 다른 Counter 인스턴스를 생성하여 정적 변수에 접근
        Counter.increment(); // count를 1 증가시킴
        System.out.println("Count using static method (new instance): " + Counter.getCount()); // count의 현재 값 출력
    }
}
Count using static method: 1
Count using static method (new instance): 2

 

static 키워드를 사용하면 count 변수는 클래스 수준의 변수이기 때문에 모든 Counter 인스턴스가 동일한 count 변수를 공유한다. 따라서 각 인스턴스에서 increment() 메서드를 호출하여 count 값을 증가시킬 때 모든 인스턴스의 count 값이 변경된다.

 

 

 

■ static 이 아닌 경우

 

public class Counter {
    private int count = 0;

    public void increment() {
        count++;
    }

    public int getCount() {
        return count;
    }
}

public class Main {
    public static void main(String[] args) {
        // 첫 번째 Counter 클래스의 인스턴스 생성
        Counter counter1 = new Counter();
        counter1.increment(); // count를 1 증가시킴
        System.out.println("Count using instance method (counter1): " + counter1.getCount()); // counter1의 count 값 출력

        // 두 번째 Counter 클래스의 인스턴스 생성
        Counter counter2 = new Counter();
        counter2.increment(); // count를 1 증가시킴
        System.out.println("Count using instance method (counter2): " + counter2.getCount()); // counter2의 count 값 출력
    }
}

 

static 키워드를 사용하지 않았기 때문에 각 Counter 인스턴스는 독립적인 count 변수를 가지고 있다. 따라서 각 인스턴스의 increment() 메서드 호출은 해당 인스턴스의 count 값을 변경하며, 각 인스턴스의 count 값은 서로 영향을 주지 않는다

Count using instance method (counter1): 1
Count using instance method (counter2): 1

 

 

각 인스턴스가 독립적인 인스턴스 변수 count를 가지고 있기 때문에, 각각의 인스턴스에서 increment() 메서드를 호출할 때마다 해당 인스턴스의 count 값만 증가하므로 각 인스턴스에 대해 서로 다른 count 값이 출력된다.

 
반응형

'정보처리,전산 > JAVA' 카테고리의 다른 글

ArrayIndexOutOfBoundsException  (0) 2024.05.08
객체 생성  (0) 2024.04.21
public static void main(String[] args)  (0) 2024.04.12
JDBC - 데이터베이스에서 UPDATE 쿼리를 실행  (0) 2024.04.08
생성자 - 업캐스팅  (0) 2024.03.12