Java intern()

Java String [Java String]Java String


intern()

intern()

intern() s t s.equals(t) true s.intern() == t.intern() true

String s1 = new String("Hello");
String s2 = "Hello";
String s3 = s1.intern();

System.out.println(s1 == s2);  // false
System.out.println(s2 == s3);  // true

public String intern()

intern() String Pool

Java

  • JDK 6 intern() OutOfMemoryError

  • JDK 7

intern()

public class RunoobTest {
    public static void main(String args[]) {
        // str1 "Runoob"String Pool
        String str1 = "Runoob";

        // str2 new Heap
        String str2 = new String("Runoob");

        // str3 str2 intern()
        // intern() "Runoob"
        String str3 = str2.intern();

        // str1 str2
        // str1 "Runoob"str2
        // false
        System.out.println(str1 == str2);  // false

        // str1 str3
        // str3 str2 intern() "Runoob"
        // str1 "Runoob" true
        System.out.println(str1 == str3);  // true
    }
}

String str1 = "Runoob";

  • "Runoob"String Pool

String str2 = new String("Runoob");

  • new Heap str2

String str3 = str2.intern();

  • intern() "Runoob"

  • str1 str3 str1

System.out.println(str1 == str2);

  • str1 str2 == false

System.out.println(str1 == str3);

  • str3 intern() str1 true

false
true

Java String [Java String]Java String