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와 비슷하게 동작합니다.
[JAVA] Wrapper 클래스간 비교 (0) | 2023.11.10 |
---|---|
[java]Integer.toString(x, 2) 과 Integer.toBinaryString의 차이점 (0) | 2023.09.24 |
[SpringBoot] @Component와 @Configuration/@Bean (0) | 2023.08.28 |
[JAVA] String의 replace (0) | 2023.08.14 |
[SpringBoot] springboot 구조 (0) | 2023.08.14 |