inflearn logo
강의

Course

Instructor

Solid Foundation! Java Starting Strongly - Part 2: OOP and JVM

MyString Class Implementation Walkthrough

[MyString 실습 인스턴스 중복 생성 문의] MyString.setString(String param)

Resolved

100

ygu9907

1 asked

0

선생님 안녕하십니까

public void setString(String param) {
    string = param.getBytes().clone();
}

getBytes() 메서드 호출 시점에 [] bytes 인스턴스가 새로 생성 되었으나 이후에 clone() 메서드를 호출하는 것은 getBytes()로 새로 생성한 인스턴스에 대한 또 다른 인스턴스를 생성하는 것이므로 이는 중복 생성이 아닌가.. 하는 생각이 들어 여쭙고자 합니다.

제 생각에는 매개변수의 타입이 [] bytes 임을 전제로 하시고 말씀하신것 같습니다만 말씀하시는 내용과 코드가 달라 혹여 수강생들에게 혼란을 주지 않을까 싶어 질문으로 남깁니다.

스크린샷 2025-11-26 오후 8.08.55.png

혹여나 제가 잘못 생각한 부분이 있다면 따끔히 지적 부탁드립니다.

항상 좋은 상의 만들어주셔서 감사합니다 (꾸벅)

java 객체지향 jvm data-structure

Answer 2

1

communityai8509

안녕하세요, 인프런 AI 인턴입니다. ygu9907님!

문의해주신 내용은 Java의 getBytes() 메서드와 그 결과의 clone() 적용에 관한 것입니다. 이해하신대로, getBytes() 메서드를 호출하면 String 객체의 내용을 바이트 배열로 인코딩하여 새로운 바이트 배열 인스턴스를 생성하게 됩니다. 그 후 clone() 메서드를 호출하면, 이미 생성된 바이트 배열을 복사하여 또 다른 새로운 인스턴스를 생성하게 되므로, 말씀하신 대로 결과적으로 두 번의 인스턴스 생성이 이루어집니다.

이러한 중복 생성은 특히 깊은 복사 작업을 위한 코드 명확성이나 디버깅을 쉽게 하기 위한 의도로 사용되기도 합니다. 예를 들어, 다른 개발자가 해당 코드 부분을 읽을 때 의도적으로 복사본을 사용하려는 개발자의 의도를 명확히 알 수 있기 때문입니다.

다만, 성능을 최적화해야 하는 상황에서는 불필요한 객체 생성을 최소화하는 방향으로 고려할 수도 있습니다. 따라서 특정 상황에 따라 달리 접근할 필요가 있으며, 코드에 기재된 기능의 목적에 따라 clone 사용을 다르게 적용할 수 있습니다.

이와 유사한 다른 질문을 참고하여 더 깊이 이해하고 싶으시다면, 아래 링크들을 확인해보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

ygu9907

Wow

0

nullnull8537

아니오. 잘못 생각하신 것이 아니고 불필요한 clone() 호출이 맞습니다. 본인이 생각하신 내용이 맞다는 것을 확인드립니다. 예제의 오류는 향후 강의를 개정하는 과정에 반영하도록 하겠습니다. 고맙습니다. 😄

compareTo를 사용하는 이유가 뭔가요?

0

46

1

[실습] MyString에 복사 생성자 추가

0

38

1

안녕하세요~ 회수라는 의미에 대해서 질문합니다.

0

71

1

equals의 재정의(overriding)에 대해서

0

80

2

TestEx 객체 생성 시 생성자 호출 질문

0

62

2

주소록 실습 3단계에서 막혔어서 조언을 구하려고 질문 드립니다.

0

85

2

해시 알고리즘 관련으로 질문이 있습니다.

0

73

2

21분 경 Old generation의 GC 설명 질문입니다.

0

102

3

임시 객체의 첫 번째 상황에 대한 질문

0

70

2

String 객체가 하나 더 생성되는 이유가 궁금합니다

0

190

3

하위 클래스와 상위 클래스의 생성자 순서

0

105

2

GC의 age와 관련하여 질문 있습니다.

0

97

2

Object Header 의 Klass word (39강 36:00)

0

115

2

method area는 이름이 class area가 아니고 왜 method aread인지 궁금합니다.

0

139

2

교안 p.305 'throw 필수' 질문

0

81

1

Metaspace에 대한 질문

0

258

2

clone() 메서드를 재정의함으로써 Deep copy로 구현한다로 이해하면 될까요?

0

120

2

MyListEx 질문드립니다.

1

136

1

part3 강의 개강

0

197

2

문자열 비교 강좌에서 문자열 선언 방법 간에 hashCode() 값 관련한 질문입니다.

0

222

2

상속과 오지랖의 콜라보 예제에서 clone() 메서드에 대한 문의드립니다.

1

182

2

보이지 않는 임시 객체의 자막 수정 요청

0

116

2

스레드 관련해서 질문이 있습니다.

0

203

1

metaspace 관련 문의드립니다.

0

199

2