열정 실천

[정처기] Static 변수와 Static 함수 본문

CS/공부노트

[정처기] Static 변수와 Static 함수

구운오니 2024. 10. 7. 15:34
728x90

 

프로세스의 메모리 세그먼트 부분에서 배웠듯이 Static변수는 프로그램이 시작될 때 data 부분에 메모리가 할당이 되고 프로그램이 종료될 때까지 그 값을 유지한다. 지역 변수와 달리 함수나 메서드가 종료되어도 값이 사라지지않고 유지된다. 

 

 

 

 

 

 

C/C++에서의 static 변수와 함수

 

 

  • 전역 변수: 파일의 전역에서 static 키워드를 사용하면 해당 파일 내에서만 접근할 수 있는 전역 변수 및 함수가 되고, 다른 파일에서 그 변수를 참조할 수 없다.
  • 지역 변수: 함수 내에서 static 변수를 선언하면 함수 내에서만 접근할 수 있지만, 함수가 여러 번 호출되더라도 값이 초기화되지 않고 이전 값이 유지된다.

 

 

 

JAVA에서의 Static 변수

 

클래스 변수라고도 하며, 객체에 속하지 않고 클래스에 속하는 변수이다.  

즉, 모든 객체가 해당 변수를 공유한다.  인스턴스가 여러 개 만들어져도 static 변수는 하나만 존재하며, 클래스가 메모리에 로드될 때 할당되고 프로그램이 종료될 때까지 유지된다. 

 

class Example {
    static int staticVariable = 0;

    void increment() {
        staticVariable++;
    }
}

public class Main {
    public static void main(String[] args) {
        Example obj1 = new Example();
        Example obj2 = new Example();

        obj1.increment();
        System.out.println(Example.staticVariable); // 1

        obj2.increment();
        System.out.println(Example.staticVariable); // 2
    }
}

 

Example클래스의 객체가 2개 만들어졌지만 static 변수인 staticVariable은 각각 객체마다 생성되는 것이 아니고 오로지 한 개만 존재한다. 이 값을 두 객체가 공유하는 것이다. 

 

 

🔊 Java에서는 함수 내에 static 변수를 선언할 수 없다. 

 

 

JAVA에서의 Static 함수

 

 

Java에서 static 메서드는 클래스에 속한 메서드객체 인스턴스를 생성하지 않고도 해당 메서드를 호출할 수 있다.

static 변수와 마찬가지로, static 메서드는 클래스 레벨에서 공유되며, 모든 인스턴스가 동일한 메서드를 사용한다. 

 

class Example {
    static void staticMethod() {
        System.out.println("This is a static method");
    }
}

public class Main {
    public static void main(String[] args) {
        // 객체 생성 없이 클래스명으로 호출 가능
        Example.staticMethod();
    }
}

 

728x90