📌 static
- 공용 데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메소드를 선언하고자 할 때 활용
- 정적 메소드는 객체 참조 없이 바로 사용할 수 있는 특징으로 인스턴스 필드나 메소드, 그리고 this 키워드를 사용할 수 없다.
- 객체마다 가질 필요가 없는 공용으로 사용하는 필드 혹은 인스턴스 필드를 포함하지 않는 메소드
👉 static을 언제 사용해야 하는가?
1. 모든 인스턴스에 공통된 값을 유지해야 하는 멤버 변수
- 인스턴스를 생성하면, 각 인스턴스들은 서로 독립적이기 때문에 서로 다른 값을 유지합니다. 경우에 따라서 각 인스턴스들이 공통적으로 같은 값이 유지되어야 하는 경우에 static을 붙입니다.
2. 인스턴스 변수를 사용하지 않는 메소드
- 메소드의 작업내용 중에서 인스턴스 변수를 필요로 한다면, static을 붙일 수 없다. 반대로 인스턴스 변수를 필요로 하지 않는다면, 가능한 static을 붙이는 것이 좋습니다. 인스턴스를 따로 생성하지 않아도 되며, 메소드 호출 시간이 짧아지기 때문에 효율이 높아진다. static을 안 붙인 메소드는 실행 시 호출되어야 할 메소드를 찾는 과정이 추가적으로 필요하기 때문에 시간이 조금 더 걸린다.
📌 final
- final class : 부모 클래스가 될 수 없다. (상속 불가)
- final method : 오버 라이딩 불가
- final 예약어는 지역변수를 선언할 때 사용하면 해당 지역변수를 수정할 수 없도록 만든다. 한번 값이 고정되면 값을 바꿀 수 없도록 하는 것으로, 모든 영역에서 상수로 사용되는 static final과 유사하지만 조금의 차이가 있다.
👉 final 변수가 반드시 상수는 아니다.
왜냐면 final의 정의가 '상수'가 아니라 '한 번만 초기화 가능하다' 이기 때문이다. 즉, 인스턴스를 생성할 때 한 번만 초기화하고 쭉 변화 없이 사용하는 경우 final만 활용
📌 static final
- 상수를 선언하고자 할 때 사용된다.
- static final은 final과 다른 점은 객체마다 따로 저장할 필요가 없는 공용성을 가지고 있는 점이다. 때문에 static을 추가적으로 선언을 해줌으로써 객체를 생성시키지 않고도 사용할 수 있다.
'Java' 카테고리의 다른 글
[Java] Enum ? 열거형 (Enumeration) (0) | 2022.05.27 |
---|---|
[Java] 객체지향 5원칙 SOLID (0) | 2022.05.24 |
[Java] == 연산자 & equals() 차이점 (0) | 2022.05.12 |
[Java] toCharArray(), charAt() (0) | 2022.01.25 |
[Java] Checked Exception, Unchecked Exception (0) | 2022.01.24 |