레이싱 경주를 구현하다보니 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 영역에 할당함으로써 효율적으로 계속 사용하려 할때 사용한다.
'코코코딩공부 > JAVA' 카테고리의 다른 글
[JAVA] 일급 컬렉션 (0) | 2023.02.25 |
---|---|
[JAVA] 원시값 포장 (0) | 2023.02.25 |
[JAVA] equals와 hashCode를 Override 해야하는 이유 (0) | 2023.02.25 |
[JAVA] 정규표현식 (0) | 2023.02.14 |
[JAVA] ENUM (0) | 2023.02.06 |