문자열이 불변임을 증명하는 방법
저는 문자열의 불변성에 관해 두 개의 글을 썼고, 마지막에는 거의 토할 뻔했습니다. 하지만 아직도 이해하지 못하는 학생들이 있습니다. 가끔 누군가가 나에게 개인 메시지를 보내면 이전 기사를 즐겨찾기에 넣어야 합니다. 요청하면 링크를 보내 드리겠습니다.
이러한 혼란을 야기하는 요소는 많습니다. 예를 들어 Java는 값별 전달인가요, 아니면 참조별 전달인가요?
이번에 다시 얘기해야 겠네요. 지쳤으니 아직 증명해야지 아!
public class StringImmutabilityTest { public static void main(String[] args) { String s1 = "沉默王二"; String s2 = s1; System.out.println(s1 == s2); s1 = "沉默王三"; System.out.println(s1 == s2); System.out.println(s2); } }
출력 결과는 다음과 같습니다.
true false 沉默王二
1) String s1 = "Silent Wang Er", Java는 "Silent Wang Er"이라는 문자열의 객체를 생성합니다. 문자열 상수 풀에 주소 참조를 할당합니다. s1
2)String s2 = s1, s2 및 s1은 상수 풀의 "Silent King 2"라는 동일한 주소 참조를 가리킵니다.
그래서, 이때 s1 == s2는 참입니다.
3) s1 = "Silent Wang San", Java는 문자열 상수 풀에 "Silent Wang San" 문자열의 개체를 생성하고 주소 참조를 s1에 할당하지만 s2는 여전히 "Silent Wang II" 주소를 가리킵니다. 해당 문자열 개체의 참조입니다.
그래서 이때 s1 == s2는 false이고 s2의 출력 결과는 "Silent Wang Er"이므로 문자열이 불변임을 증명합니다.
위 내용은 Java에서 문자열이 불변임을 증명하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!