intern()方法:
public String intern()
JDK源代码如下图:
返回字符串对象的规范化表示形式。
一个初始时为空的字符串池,它由类 String 私有地维护。
当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),
则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。
它遵循对于任何两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。
所有字面值字符串和字符串赋值表达式都是内部的。
返回:
一个字符串,内容与此字符串相同,但它保证来自字符串池中。
尽管在输出中调用intern方法并没有什么效果,但是实际上后台这个方法会做一系列的动作和操作。
在调用”ab”.intern()方法的时候会返回”ab”,但是这个方法会首先检查字符串池中是否有”ab”这个字符串,
如果存在则返回这个字符串的引用,否则就将这个字符串添加到字符串池中,然会返回这个字符串的引用。
例如:
public class Str2{ public static void test(){ String a="a"; String b=a+"b"; String c="ab"; String d=new String (b); System.out.println(b==c); System.out.println(d==c); System.out.println(c==d.intern()); System.out.println(b.intern()==d.intern()); } public static void main(String []args){ new Str2().test(); } }
时间: 2024-10-13 01:08:44