理解String的intern()方法
API文档中的介绍:
intern
public String intern()
Returns a canonical representation for the string object.
A pool of strings, initially empty, is maintained privately by the class String
.
When the intern method is invoked, if the pool already contains a string equal to this String
object as determined by the equals(Object)
method, then the string from the pool is returned. Otherwise, this String
object is added to the pool and a reference to this String
object is returned.
It follows that for any two strings s
and t
, s.intern() == t.intern()
is true
if and only if s.equals(t)
is true
.
All literal strings and string-valued constant expressions are interned. String literals are defined in section 3.10.5 of the The Java™ Language Specification.
- Returns:
- a string that has the same contents as this string, but is guaranteed to be from a pool of unique strings.
- 意思就是说:
- 该方法返回一个规范化表示的string对象。
- 一个字符串常量池,初始化为空,且被String类私有地维护。
- 当intern()被调用时,如果常量池中存在和该String对象equal的对象(由equals方法决定),则返回常量池中已有的String对象,若不存在,则将该对象加入常量池,并返回该对象的引用。
- 代码验证如下:
-
1 public static void main(String[] args){ 2 String a="abc"; 3 String b=new String("abc"); 4 String c=b.intern(); 5 System.out.println(b==a); 6 System.out.println(b==c); 7 System.out.println(c==a); 8 }
输出结果为:
1 false 2 false 3 true
posted on 2016-03-19 21:05 Yanspecial 阅读(582) 评论(0) 编辑 收藏 举报