OOP 발표자료 보완

독기산·2022년 11월 20일
0

OOP 발표

목록 보기
2/2

1. 객체 간의 관계


사용 관계, 집합 관계는 무엇인가?

1.1 사용 관계

▶️ 한 객체가 그것의 행위를 수행하기 위해 다른 객체를 사용하는 경우 Call by Value

1.2 집합 관계

▶️ 객체가 다른 객체를 필드(멤버 변수)로 유지하는 경우


2. String


참조 자료형인 String, 하지만 유일하게 참조 자료형 중 new 연산자를 사용하지 않습니다.

new 연산자를 생략할까?

반대로 new 키워드를 사용하면 어떻게 될지 생각해봅시다.

String에 new 키워드를 사용하면 어떻게 될까?

String 객체 생성 방법에는 2가지가 있습니다.

1️⃣. ""(쌍따옴표)를 이용해 문자열 리터럴로 String 객체 생성
2️⃣. new 연산자를 이용해 새로운 String 객체 생성

감이 오시죠?

  • 위 그림처럼 객체는 Heap 메모리 영역에 할당됩니다.

    • new 연산자를 이용해 객체를 생성하면 매번 새로운 객체가 생겨납니다.

    • 문자열 리터럴로 객체를 생성하면 Heap 메모리 영역 안에 있는 String Constant Pool 영역에 할당됩니다.

    • 자바는 문자열 리터럴이 동일하다면 String 객체를 공유하도록 되어 있습니다.

  • 따라서 new 연산자를 사용해 String 객체를 생성하는게 default라면, Heap 메모리 영역에 매번 새로운 String 객체를 생성하게 될 것 입니다.
  • 이는 String의 장점인 불변성을 활용하지 못하게 되고 메모리 효율에도 문제가 생길 수 있습니다.


참고 자료

profile
도끼든 산독기

1개의 댓글

comment-user-thumbnail
2023년 2월 2일

대박쓰..

답글 달기