Java 문자열 대체 수수께끼
문자열 내의 값을 업데이트하려는 시도에서 제공된 코드는 문자열의 대체 메소드를 사용합니다.
String html = "<html><head></head><body>**USERNAME** AND **PASSWORD**</body></html>"; html.replace("**USERNAME**", "User A"); html.replace("**PASSWORD**", "B");
그러나 이 접근 방식은 기대한 결과를 얻지 못합니다. 왜 그럴까요?
String Immutability Bites
이 문제를 이해하는 열쇠는 String의 불변성에 있습니다. Java의 다른 객체와 달리 문자열은 내부에서 수정할 수 없습니다. 바꾸기와 같이 문자열을 변경하는 것으로 보이는 모든 작업은 실제로 새 문자열 개체를 생성합니다.
주어진 코드에서 바꾸기 호출은 새 문자열 개체를 생성하지만 참조 html은 계속해서 원래 문자열을 가리킵니다. . 이는 원본 HTML 콘텐츠가 교체 시도의 영향을 받지 않음을 의미합니다.
해결책: 재할당 수용
이 불변성 장애물을 극복하려면 참조 HTML을 교체로 생성된 새 문자열입니다. 수정된 코드는 다음과 같습니다.
html = html.replace("**USERNAME**", "User A"); html = html.replace("**PASSWORD**", "B");
대체 호출마다 html을 다시 할당하여 원하는 대체 항목이 포함된 업데이트된 문자열을 가리키도록 할 수 있습니다. 이 방법은 원하는 대체를 달성하기 위해 문자열의 불변성을 인식하고 해결합니다.
위 내용은 String의 `replace` 메소드가 내 HTML 콘텐츠를 업데이트하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!