강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

ygu9907님의 프로필 이미지
ygu9907

작성한 질문수

기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM

MyString 클래스 작성 실습 해설

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

작성

·

12

0

선생님 안녕하십니까

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

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

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

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

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

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

답변 1

0

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

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

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

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

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

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

ygu9907님의 프로필 이미지
ygu9907

작성한 질문수

질문하기