질문:
Java에서 인턴( ) 문자열에 대한 메서드 리터럴?
답변:
Java는 자동으로 문자열 리터럴을 인턴합니다. 즉, 해당 값이 상수 풀에 저장되고 여러 문자열 개체에서 참조됩니다. 그러나 intern() 메서드는 new 연산자를 사용하여 생성된 문자열로 작업할 때 유용합니다.
설명:
"Rakesh"와 같은 문자열 리터럴은 자동으로 인턴. 즉, new String("Rakesh")에 의해 반환된 문자열 참조는 항상 리터럴 "Rakesh"와 동일한 개체를 가리킵니다.
그러나 new로 생성된 문자열은 인터닝되지 않습니다. String s4 = new String("Rakesh") 코드는 "Rakesh" 값이 이미 상수 풀에 존재하더라도 메모리에 새 객체를 생성합니다. 새로 생성된 문자열을 강제로 인터닝하려면 String s5 = new String("Rakesh").intern()과 같이 intern() 메서드를 사용할 수 있습니다.
따라서 intern() 메서드는 여러 문자열 객체가 상수 풀의 동일한 객체를 참조하는지 수동으로 확인하고 싶을 때 사용해야 합니다. new.
예:
다음 코드를 고려하세요.
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"); // 1. } if (s1 == s3) { System.out.println("s1 and s3 are same"); // 2. } if (s1 == s4) { System.out.println("s1 and s4 are same"); // 3. } if (s1 == s5) { System.out.println("s1 and s5 are same"); // 4. }
출력은 다음과 같습니다.
s1 and s2 are same s1 and s3 are same s1 and s5 are same
1, 2, 4행에서는 s1, s2, s3 및 s5는 모두 상수 풀의 동일한 객체를 참조합니다. 3행에서는 s4가 s1과 동일한 값을 가짐에도 불구하고 메모리에서 다른 개체임을 보여줍니다.
위 내용은 언제 Java의 문자열 `intern()` 메소드를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!