理解String的intern()方法

Posted Yanspecial

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解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 ts.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

 

以上是关于理解String的intern()方法的主要内容,如果未能解决你的问题,请参考以下文章

几张图轻松理解String.intern()

几张图轻松理解String.intern()

几张图轻松理解String.intern()

图解jdk1.8中的intern()方法,包教包会

图解jdk1.8中的intern()方法,包教包会

Java--深入理解字符串的String#intern()方法奥妙之处