为什么不对String.toLowerCase()返回的字符串进行实习?

mou*_*aim 1 java string string-comparison

我被要求预测此代码的输出:

String party1 = "party";
String party2= "PARTY".toLowerCase();
if(party1==party2){
   System.out.println("EQUAL");
}else{
   System.out.println("NOT EQUAL");
}
Run Code Online (Sandbox Code Playgroud)

我认为的结果toLowerCase()将被自动插入,因此party1将返回相同的引用,但是由于代码输出“ NOT EQUAL”,我是错的。
是否toLowerCase()toUpperCase()以及)返回一个新的String

编辑:我不使用==比较字符串,我只想了解toLowerCase()方法的行为

And*_*lko 5

如果将任何String操作的结果内在化,则该池将极其迅速且不必要地迅速增长。对Spring的任何中间操作都会在池中产生一个新元素。对于非常特定的域内的极少数情况,这将是有益的。因此,这不是默认策略,因此intern()存在。

String party1 = "party";
String party2 = "PARTY".toLowerCase().intern();
System.out.println(party1 == party2 ? "EQUAL" : "NOT EQUAL");
Run Code Online (Sandbox Code Playgroud)

没什么特别的toLowerCase():因为s是不可变的,所以任何String方法都将返回一个新值。StringString