final 필드
final int number = 1; // final 리턴타입 필드명 [= 초기값];
final 필드의 초기값을 줄 수 있는 방법은 1. 필드 선언시 2. 생성자를 통해서 가 있다.
final 클래스
해당 선언이 최종 상태이고 수정될 수 없음을 뜻함 -> final이 지정되면 초기값 설정 후 더 이상 값 변경할 수 없다.
상속할 수 없는 클래스 = 부모 클래스가 될 수 없고, 자식 클래스를 만들 수 없다.
public final class 클래스명 { ... }
final 클래스의 대표적인 예는 자바 표준 API에서 제공하는 String 클래스이다.
final 메소드
메소드를 선언할 때 final 키워드를 붙이면 이 메소드는 최종적인 메소드이므로 재정의 할 수 없는 메소드.
즉, 부모 클래스를 상속해서 자식 클래스를 선언할 때, 부모 클래스에 선언된 final 메소드는 자식 클래스에서 재정의(Overriding)할 수 없다. 자신이 만든 메소드를 변경할 수 없게끔 하고 싶을 때 사용하며, 시스템의 코어 부분에서 변경을 원치 않는 메소드에 많이 구현되어 있다.
String vs StringBuffer vs StringBuilder
String : 불변한 문자열로 변경 작업을 할 때마다 새로운 String 객체가 생성되므로 메모리 공간과 성능 문제 발생 가능성이 있다.
StringBuffer : 가변 문자열로, 변경할 시 기존 객체 내부가 수정되며 문자열 작업이 빈번한 경우에 유용하며, 내부적으로 동기화되어 멀티 스레드 환경에서 유용
StringBuilder : StringBuffer와 마찬가지로 가변 문자열로 변경 작업 시 기존 객체 내부 수정. 하지만 내부적으로 동기화되지 않아 멀티 스레드보다 단일 스레드 환경에서 좋다.
'Java' 카테고리의 다른 글
[Java] 스레드 개념, 실행 방법 (0) | 2023.09.01 |
---|---|
[Java] 인터페이스 (0) | 2023.08.31 |
최상위 객체 Object, 캡슐화 (0) | 2023.08.31 |
static 필드, 인스턴스 필드 차이 (0) | 2023.08.31 |
[Java] JDK, JRE 차이 (0) | 2023.08.31 |