본문 바로가기
프로그래밍/java

12. final 클래스, 불변객체 String

by 수삼이는코딩중 2023. 9. 6.
728x90

Final 클래스는 상속받지 못한다

String은 final 클래스 이다. 왜? 
string 객체를 new로 생성하지 않으면 상수처럼 메모리에 올라가 그것을 참조한다..(변하지 않는다)

new로 생성하면 항상 새로운 인스턴스가 메모리에 올라가서 그 것을 참조한다. 

 

레퍼런스 타입에서 ==는 같은 것을 참조하느냐? 를 물어보는 것.

스트링은 레퍼런스타입. 

따라서 new로 생성하면 인스턴스가 각각만들어지기 때문에 같은 문자라도 다른 인스턴스를 참조하게 된다.

그냥 "~~"로 생성하면 같은 상수(처럼) 를 참조한다. 

따라서 new를 안쓰는 게 메모리를 아끼는 것.

 

단, equals 메소드를 쓰면 문자만 같으면 같다고 나온다. equals는 값이 같냐는 것을 묻기 때문에. 

 

string객체에 어떤 메소드를 써도 객체 자체는 변하지 않는다. 불변 객체. 

'프로그래밍 > java' 카테고리의 다른 글

14. 인터페이스  (0) 2023.09.14
13. 접근 제한자  (0) 2023.09.06
11. java 템플릿 메소드 패턴  (0) 2023.05.23
9. java 생성자  (0) 2023.05.11
8. java 상속, 오버라이딩, getter&setter  (0) 2023.04.10

댓글