...

[JAVA] Static이란? 본문

언어/JAVA 자바

[JAVA] Static이란?

gi2 2022. 2. 28. 16:56

Static = '고정된'

 

Static 키워드를 통해 생성된 정적 변수/ 함수들은 Heap 공간이 아닌 static이라는 공간의 별도 분리된다.

Heap 공간에 있는 멤버 변수들은 객체들이 메모리를 공유하지 않으며, Garbage Collector의 관리 영역 안에 존재한다.

하지만 이와 반대로 Static 공간에 있는 정적 멤버 변수들은 객체들이 메모리를 공유하며, Garbage Collector의 관리 영역 밖에 존재하기 때문에 프로그램 종료 시까지 메모리가 할당된 채로 존재한다.

 

[ static 정적 함수 사용 예시 ]

class Name{
    static void print() { //클래스 메소드
	System.out.println("내 이름은 홍길동입니다.");
    }

    void print2() { //인스턴스 메소드
	System.out.println("내 이름은 이순신입니다.");
    }
}

public class Static_ex {
	
    public static void main(String[] args) {
        Name.print(); //인스턴스를 생성하지 않아도 호출이 가능
    	
        Name name = new Name(); //인스턴스 생성
        name.print2(); //인스턴스를 생성하여야만 호출이 가능
    }
}

정적 메소드는 클래스가 메모리에 올라갈 때 정적 메소드가 자동으로 생성된다.

따라서 객체를 새로 생성하지 않아도 호출할 수 있다. 

Comments