[TIL] Static, Final에 대해

신동하·2024년 4월 25일

Java

목록 보기
2/3
post-thumbnail

1.Static

static 으로 초기화 된 변수는 프로그램 실행 이후, 메모리의 Data영역에 초기화가 된다.
지역변수들과 매개변수들은 메모리의 stack 영역에 할당이 되는데 좀 더 자세히 말해보자연 지역변수와 매개변수들은 함수의 호출과 함께 메모리 공간이 할당이 되고, 함수의 종료와 동시에 할당된 공간 반환이된다.
하지만 static 변수는 프로그램의 실행과 동시에 Data 영역에 할당이 되고 프로그램이 종료되야 할당이 해제된다. 추가적으로 static 변수가 선언이 된 인스턴스를 생성하지 않더라도, 접근이 가능하고 여러 인스턴스들이 공유가 가능하다. 하지만 자바의 Garbage Collector에 의해 관리가 되지 않으므로 너무 많은 static 변수는 시스템의 성능에 영향을 끼친다.

public class test {
    public static void main(String[] args) {
        System.out.println(x);//error 발생 x라는 변수는 바로 참조가 불가능 하다.
        System.out.println(test2.y);//y는 static 변수이기 때문에 직접 참조가 가능하다.

    }
}
class test2 {
    int x =10;
    static int y =10;
}

2.Final

static에 비해 개념이 단순하다. final로 선언된 변수는 한번 선언이 된 이후로는 수정이 불가능 하다.

class test{
	final double PI = 3.141592;
    PI = 3.14 // error final로 선언이되면 차후 수정이 불가능하다.
}

3.Static Final

두 가지의 개념을 합쳐진 것이다 Final로 선언이 되어 있기 때문에 선언이 된 이후로도 수정이 불가능하며, static으로 선언되어 있기 때문에 선언이 진행된 클래스의 인스턴스를 생성하지 않더라도 접근이 가능하다.!

글을 쓰며..

여러 글을 읽어보며 자바의 변수, 클래스 메모리 할당에 대한 지식이 상당히 부족했던것 같다.ㅎ..
정보처리기사나 마지막 학기 중간고사를 일단 끝내보고, 자바에 대해 좀 Deep하게 들어가봐야 할 것 같다. 화이팅~!~!😀

profile
JAVA를 자바💥😊😀

0개의 댓글