코코코딩공부/JAVA

[JAVA] static, final, static final 이란 ?

Ocean_ 2023. 2. 12. 01:20

레이싱 경주를 구현하다보니 static, final, static final의 차이가 궁금해져서 작성하게되었다. 뭔가 세개가 다 같다고 느껴져서 작성해보았다.

static

공용으로 가지는 필드이다.

객체 생성 없이 사용할 수 있는 필드와 메소드를 의미한다. static 변수,메소드는 Heap영역이 아닌 Static영역에 할당된다. Static 영역에 할당된 메모리는 모든 객체가 공유할 수 있다. 하지만 Static영역에 있는 멤버들은 프로그램의 종료시까지 메모리가 할당된 채로 존재하게 되므로 메모리차지를 통해 시스템 성능이 안좋을 수 있다.

지역변수, 메소드 라고 생각하면 될 것 같다.

final

final 키워드는 딱 한번 값이 할당 될 수 있는 필드이다.

final 클래스 - 상속할 수 없는 클래스

final 메소드 - 오버라이딩으로 수정할 수 없는 메소드

final 변수 - 한번 값을 할당하면 수정할 수 없으며 초기화 한번 가능하다.

static final

static을 사용하면 메모리를 낭비하지 않고 그대로 사용할 수 있다 && final을 사용하면 딱 한번 값이 할당 될 수 있다는 것이다. -> 그러면 어차피 한번 값을 할당해서 계속해서 사용하려고 한다면 결국 static final을 통해 static 영역에 할당함으로써 효율성을 높이게 사용한다.

 

모든 영역에서 고정된 값으로 사용하는 상수

 

 

결론

static 은 static 영역에 할당 함으로써 정적으로 사용한다.

final 은 한번 값을 할당할 수 있다.

static final은 한번 값을 할당해서 계속 쓸거라면 static 영역에 할당함으로써 효율적으로 계속 사용하려 할때 사용한다.