2 qq 36109365 qq_36109365 于 2017.09.19 20:59 提问

一个关于intern()方法和string、stringbuider的问题
    String string = new StringBuilder("计算机").append("软件").toString();
    System.out.println(string.intern() == string);
    String string2 = new String("计算机硬件");
    System.out.println(string2.intern() == string2);

1个回答

en_joker
en_joker   2017.11.09 15:23

返回字符串对象的规范化表示形式。
一个初始为空的字符串池,它由类 String 私有地维护。

当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并返回此 String 对象的引用。

它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。

所有字面值字符串和字符串赋值常量表达式都使用 intern 方法进行操作。字符串字面值在 Java Language Specification 的 §3.10.5 定义。

Csdn user default icon
上传中...
上传图片
插入图片