String 的intern() ⽅法

61 阅读1分钟

String.intern() 是⼀个 native(本地)⽅法,其作⽤是将指定的字符串对象的引⽤保存在字符串常量 池中,可以简单分为两种情况:

  • 如果字符串常量池中保存了对应的字符串对象的引⽤,就直接返回该引⽤。
  • 如果字符串常量池中没有保存了对应的字符串对象的引⽤,那就在常量池中创建⼀个指向该字符 串对象的引⽤并返回。
// 在堆中创建字符串对象”Java“ 
// 将字符串对象”Java“的引⽤保存在字符串常量池中 
String s1 = "Java"; 

// 直接返回字符串常量池中字符串对象”Java“对应的引⽤ 
String s2 = s1.intern(); 

// 会在堆中在单独创建⼀个字符串对象 
String s3 = new String("Java"); 

// 直接返回字符串常量池中字符串对象”Java“对应的引⽤ 
String s4 = s3.intern(); 

// s1 和 s2 指向的是堆中的同⼀个对象 
System.out.println(s1 == s2); // true 

// s3 和 s4 指向的是堆中不同的对象 
System.out.println(s3 == s4); // false 

// s1 和 s4 指向的是堆中的同⼀个对象 
System.out.println(s1 == s4); //true