在java中,可以使用new运算符或使用+和+ =创建String.那么,所有这些字符串创建技术是否检查字符串池中是否已存在该字符串.如果他们dint那么String创建技术将检查池.
不,他们没有.
简单的例子:
String s = new String("hell");
String hello = "hello";
s += 'o';
System.out.println(hello == hello.intern()); //True
System.out.println(s == s.intern()); //False
System.out.println(s == hello); //False
System.out.println(s.intern() == hello); //True
//To sum up : s != s.intern() == hello.intern() == hello
Run Code Online (Sandbox Code Playgroud)
这里新版"s"不是"你好"的内部版本
如果您想拥有特定字符串的池版本,可以使用该intern()
方法(就像我上面所做的那样).这样你肯定会有相同的参考.
资源:
String.intern()
您可能认为该链接指向valueOf(double)
,但该intern()
方法是正确的;))