正如在本文中所解释的那样,我们应该在字符串常量上使用字符串的实际方法发布字符串文字是自动合并但是对于使用new构造的对象不是,因此使用该实习方法.但即使我们使用实习方法,也会创建一个新对象,那么实习方法的用途是什么?
String s = "Example";
String s1 = new String("Example"); // will create new object
String s2 = new String("Example").intern(); // this will create new object
// but as we are calling intern we will get reference of pooled string "Example"
Run Code Online (Sandbox Code Playgroud)
现在
System.out.println(s == s1); // will return false
System.out.println(s == s2); // will return true
System.out.println(s1 == s2); // will return false
Run Code Online (Sandbox Code Playgroud)
那么实习方法的用途是什么?
编辑
我理解实习生方法的工作,但我的问题是为什么有实习方法?因为要调用intern方法我们必须使用new创建字符串对象,这将创建新的字符串实例!
String s3 = new String("Example"); // again new object
String s4 = s3.intern();
System.out.println(s3 == s4); // will return false
Run Code Online (Sandbox Code Playgroud)
所以调用intern方法不会将s3指向池化的字符串.intern方法将返回对池化字符串的引用.
也叫实习生串推入池中,如果它是不是已经合并?那么这是否意味着每次我在任何字符串上调用实习生都会被推送到池中?
小智 11
基本算法.intern()如下:
因此它基本上用于查找存在于池中的给定字符串(如果存在)然后它将获得相同的实例,否则它将为新String创建新实例.
| 归档时间: |
|
| 查看次数: |
6076 次 |
| 最近记录: |