사용 관계, 집합 관계는 무엇인가?
▶️ 한 객체가 그것의 행위를 수행하기 위해 다른 객체를 사용하는 경우 Call by Value
▶️ 객체가 다른 객체를 필드(멤버 변수)로 유지하는 경우
참조 자료형인 String, 하지만 유일하게 참조 자료형 중 new 연산자를 사용하지 않습니다.
왜 new 연산자를 생략할까?
반대로 new 키워드를 사용하면 어떻게 될지 생각해봅시다.
1️⃣. ""(쌍따옴표)를 이용해 문자열 리터럴
로 String 객체 생성
2️⃣. new
연산자를 이용해 새로운 String 객체 생성
감이 오시죠?
위 그림처럼 객체는 Heap
메모리 영역에 할당됩니다.
new 연산자를 이용해 객체를 생성하면 매번 새로운 객체가 생겨납니다.
문자열 리터럴로 객체를 생성하면 Heap 메모리 영역 안에 있는 String Constant Pool
영역에 할당됩니다.
자바는 문자열 리터럴이 동일하다면 String 객체를 공유
하도록 되어 있습니다.
- 따라서 new 연산자를 사용해 String 객체를 생성하는게 default라면, Heap 메모리 영역에 매번 새로운 String 객체를 생성하게 될 것 입니다.
- 이는 String의 장점인 불변성을 활용하지 못하게 되고 메모리 효율에도 문제가 생길 수 있습니다.
대박쓰..