상세 컨텐츠

본문 제목

[JAVA] String은 불변하기에 파라미터에 전달될 때 callbyvalue로 전달

JAVA\Spring

by 박집실 2023. 11. 10. 15:44

본문

Q: 자바에서 string 타입은 메소드에 파라미터 타입으로 들어갈 때 callbyreferance 가  아닌 callbyvalue로 들어가는지?

 

ANS:

자바에서는 모든 메소드 파라미터가 call-by-value로 전달됩니다. 이는 원시 타입(primitive type) 뿐만 아니라 참조 타입(reference type)에도 해당합니다. String 타입은 참조 타입에 속하므로, 메소드에 String을 전달할 때, 실제로 전달되는 것은 String 객체의 참조 값입니다. 이 참조 값은 메소드 내에서 변경할 수 없으므로, 이를 call-by-value라고 합니다.

그러나, 이 참조 값이 가리키는 String 객체의 내용을 변경하는 것은 불가능합니다. 왜냐하면 String은 불변(immutable) 클래스이기 때문입니다. 즉, 한번 생성된 String 객체의 내용은 변경할 수 없습니다. 따라서, 메소드 내에서 String을 변경하려고 하면, 실제로는 새로운 String 객체가 생성되고, 이 새로운 객체의 참조 값이 반환됩니다. 이는 원래 String객체에는 영향을 미치지 않습니다 이러한 특성 때문에, 자바에서 String을 메소드 파라미터로 전달하는 것은 call-by-value와 비슷하게 동작합니다.

관련글 더보기