문자열 리터럴에 인턴 메서드를 사용하는 경우
리터럴 구문("String")을 사용하여 생성된 문자열은 자동으로 문자열 풀에 인턴됩니다. JVM으로. 결과적으로 == 연산자는 문자열 리터럴에 대해 일관되게 작동합니다.
그러나 new String()으로 생성된 문자열에 대해서는 인터닝이 자동으로 수행되지 않습니다. 여기서 intern() 메소드가 관련됩니다.
new String()으로 생성된 String에 intern() 메소드를 사용하면 해당 String을 풀에 추가하고 동일한 String이 이미 있는 경우 기존 객체 인스턴스를 반환합니다. 존재합니다.
예:
String s1 = "Rakesh"; String s2 = "Rakesh"; String s3 = "Rakesh".intern(); String s4 = new String("Rakesh"); String s5 = new String("Rakesh").intern(); if (s1 == s2) { System.out.println("s1 and s2 are same"); } if (s1 == s3) { System.out.println("s1 and s3 are same"); } if (s1 == s4) { System.out.println("s1 and s4 are same"); } if (s1 == s5) { System.out.println("s1 and s5 are same"); }
출력은 be:
s1 and s2 are same s1 and s3 are same s1 and s5 are same
문자열이 인턴되지 않고 new를 사용하여 명시적으로 생성된 s4를 제외한 모든 경우에 JVM의 문자열 상수 풀은 동일한 불변 인스턴스를 반환합니다.
JavaTechniques를 참조하세요. 자세한 내용은 "문자열 평등과 인턴"을 참조하세요.
위 내용은 Java 문자열에 `intern()` 메서드를 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!