JAVA에서 문자열을 변경할 수 없는 이유는 무엇입니까? 정확히 무엇을 의미합니까?
2464 단어 discussbeginnersjavaprogramming
이에 대해 논의하기 전에 먼저 불변 문자열이 무엇인지 말하고 싶습니다.
Immutable simply means unmodifiable or unchangeable. Once String object is created its data or state can't be changed but a new String object is created.
이 기사를 진행하기 전에 먼저
이것이 문자열이 작동하는 방식입니다:
String str = new String("Tisha");
이것은 평소와 같이 "Tisha"를 포함하는 문자열을 생성하고 참조 str을 할당합니다.
str = str.concat(" Agarwal");
이것은 문자열 "Agarwal"을
str
에 추가합니다. 하지만 잠깐, String 객체는 변경할 수 없기 때문에 이것이 어떻게 가능한가요? 놀랍게도 그렇습니다.위의 명령문이 실행되면 VM은 String
str
값, 즉 "Tisha"를 취하고 "Agarwal"을 추가하여 "Tisha Agarwal"
값을 제공합니다. 이제 문자열은 변경할 수 없으므로 VM은 이 값을 str
에 할당할 수 없으므로 새 String 개체를 만들고 값"Tisha Agarwal"
을 제공하고 참조 str을 제공합니다.문자열을 변경할 수 없는 이유는 무엇입니까?
예제를 통해 이것을 이해합시다.
String chocolate1="KitKat";
String chocolate2="KitKat";
String chocolate3="KitKat";
무슨 일이야?
여기에서
KitKat
의 객체가 String 상수 풀 내부에 생성되고 세 개의 변수 chocolate1
, chocolate2
, chocolate3
가 모두 그것을 가리키고 있습니다.이제 cholocate3을 MilkyBar로 변경하면
chocolate3=MilkyBar;
문자열이 변경 가능한 경우 새 개체를 만들지 않고
chocolate3
값이 KitKat
에서 MilkyBar
로 변경되었다고 가정합니다. 그러나 이것이 chocolate1
및 chocolate2
값도 변경될 것이라고 생각하지 않습니까? 위의 그림과 같이 KitKat
에서 MilkyBar
까지 이 3개는 동일한 객체를 가리키고 있었습니다.그렇기 때문에 문자열은 불변입니다.
위의 예에서 이제 chocolate3은 다른 객체를 생성하고 이를 가리킬 것입니다.
기억할 점
Reference
이 문제에 관하여(JAVA에서 문자열을 변경할 수 없는 이유는 무엇입니까? 정확히 무엇을 의미합니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tishaag098/why-string-is-immutable-in-java-what-exactly-does-it-mean-59ki텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)