intern() 메소드 문자열 클래스의 문자열 중복 문제를 처리하는 데 사용할 수 있습니다. 자바에서. 인턴() 사용 중복 문자열 인스턴스가 소비하는 많은 메모리를 절약할 수 있습니다. . 문자열에 다른 문자열과 동일한 내용이 포함되어 있지만 다른 메모리 위치를 차지할 수 있는 경우 문자열이 중복됩니다.
우리는 JVM이 별도의 힙 메모리를 유지한다는 것을 알고 있습니다. 성능을 위한 문자열 리터럴의 경우. 문자열 리터럴을 선언하면 이 풀로 이동합니다. 다른 변수에 동일한 리터럴 값이 할당되면 새 개체를 만드는 대신 풀에서 선택됩니다. 힙에 저장 . 그러나 문자열이 new 생성자를 사용하여 선언된 경우 r, 리터럴이 풀에 존재하더라도 새 객체가 만들어집니다. 이것을 피하고 JVM이 풀에서 리터럴을 선택하도록 하려면 intern()을 사용합니다. 방법.
Java는 기본적으로 모든 문자열을 자동으로 인턴합니다. 인턴() 메소드는 n이 있는 문자열에서 사용할 수 있습니다. ew 문자열() ==연산자로 비교하기 위해.
예
public class StringInternClassTest { public static void main(String[] args) { String s1 = "Tutorix"; String s2 = "Tutorix"; String s3 = new String("Tutorix"); final String s4 = s3.intern(); String s5 = "?Tutorix".substring(1); String s6 = s5.intern(); System.out.println(s1 == s2); System.out.println(s2 == s3); System.out.println(s3 == s4); System.out.println(s1 == s3); System.out.println(s1 == s4); System.out.println(s1 == s5); System.out.println(s1 == s6); System.out.println(s1.equals(s2)); System.out.println(s2.equals(s3)); System.out.println(s3.equals(s4)); System.out.println(s1.equals(s4)); System.out.println(s1.equals(s3)); } }
출력
true false false false true false true true true true true true