목차
- String 클래스란? (객체 선언 방법)
- String 객체 선언 방법 (리터럴 상수와 new 생성자)
- Immutable 클래스
- String 객체는 내용을 수정할 수 없는 Immutable 클래스
1. String 클래스란? (객체 선언 방법)
- 자주 쓰는 기본형인 int, double 과 다르게 대문자로 시작되는 클래스 타입의 참조형이다
1) String 객체 선언 방법
1-1) 리터럴 상수
String test = "테스트";
1-2) new 생성자
String test = new String("테스트");
두 방법 모두 실행 후 결과는 같으나 내부 메모리 영역에서 차이가 있다
t1 과 t2 모두 "테스트"라는 값을 저장한, 0x000 이라는 인스턴스 값을 가진 메모리 공간을 생성하여 참조했기에 두 비교 모두 true 지만,
t3 와 t4 는 "테스트"라는 값을 저장한 각기 다른 인스턴스 값을 가진 메모리 공간을 생성하여 참조했기에 비교연산자 (==) 는 false 이다
2. Immutable 클래스
- 객체 선언 후 수정은 불가능하나 재할당은 가능하다
String 클래스의 특징은 String 객체를 생성하고 나면 그 객체는 수정이 불가능하다는 것이다.
하기 예시 처럼, t1 객체를 수정하면 console 창에는 객체가 수정된 것 처럼 보이지만 실제로는 또 다른 메모리 공간이 생성되어 그 인스턴스 값을 참조하는 것이다.
그렇게 되면 기존에 쓰던 "테스트" 값을 저장해둔 메모리 공간은 사용되지 않고 남아있기 때문에 효율이 감소하게 된다.
이렇듯 객체 수정은 불가능하나 재할당은 가능하다는 것이 immutable 클래스의 특징이다.
'IT 언어 > Java' 카테고리의 다른 글
[Java] Math 클래스와 메소드 (0) | 2024.01.30 |
---|---|
[Java] StringBuffer 클래스와 StringBuilder 클래스 (0) | 2024.01.29 |
[Java] Object 클래스와 메소드 (0) | 2024.01.16 |
[Java] 예외처리 2 (throw 와 throws) (1) | 2024.01.16 |
[Java] 예외처리 1 (try ~catch ~finally) (0) | 2024.01.16 |