<aside> 💡
불변성 (Immutability)
String
객체는 생성 후 수정할 수 없습니다. 문자열을 수정하려면 새로운 String
객체가 생성됩니다.String
객체가 생성됩니다.
</aside><aside> 💡
reference🔗
</aside>
✅ Equals vs == 비교
정의: 문자열 리터럴은 ""
를 사용하여 직접 정의한 문자열입니다.
메모리 관리:
예시:
java
코드 복사
String str1 = "Hello";
String str2 = "Hello";
// 같은 객체를 참조
System.out.println(str1 == str2); // true
new
연산자정의: new
연산자를 사용하여 객체를 명시적으로 생성하는 방법입니다.
메모리 관리:
new
연산자를 사용하면 매번 새로운 객체가 생성되어 힙(Heap) 메모리에 저장됩니다. 문자열 리터럴과는 달리, 동일한 내용의 문자열을 new
로 생성할 경우 각기 다른 객체가 됩니다.예시:
java
코드 복사
String str3 = new String("Hello");
String str4 = new String("Hello");
// 서로 다른 객체를 참조
System.out.println(str3 == str4); // false
new
연산자 비교특성 | 문자열 리터럴 | new 연산자 |
---|---|---|
객체 생성 위치 | 문자열 상수 풀 | 힙 메모리 |
객체 재사용 | 동일한 리터럴은 같은 객체 참조 | 항상 새로운 객체 생성 |
메모리 사용 | 효율적 | 비효율적 |
예시 | String str = "Hello"; |
String str = new String("Hello"); |
==
연산자==
연산자는 두 개의 객체나 기본 데이터 타입의 값을 비교합니다.기본 데이터 타입: 두 값이 동일한지 비교합니다. 예를 들어, 두 개의 int
값이 같으면 true
를 반환합니다.
→ 기본 데이터 타입(primitive type) example
객체: 두 객체의 메모리 주소(참조)를 비교합니다. 즉, 두 객체가 동일한 인스턴스를 참조하는 경우에만 true
를 반환합니다.