+字符串类中的运算符

Pra*_*ant 8 java string

这是关于'+'运算符返回的结果的差异.结果因字符串文字和字符串对象而异.

String str="ab";
String str1="c";
String str2 = "ab"+"c"; // Line 3
String str3 = "abc";
String str4 = str+str1;  // Line 5

System.out.println(str2==str3);  // True
System.out.println(str2==str4);  // False
Run Code Online (Sandbox Code Playgroud)

结果我们可以推断出,使用文字,返回字符串池中已有的对象,如第3行的情况,并返回字符串对象,返回新对象,如第5行所示.为什么会这样?

Uwe*_*nus 9

根据表达式的计算时间+,Strings 的oprator 处理方式不同.

当表达式可以在编译时进行计算时(如第3行所示),编译器将创建一个String仅包含连接的表达式.因此,在第3行中,只会String创建"abc",String并将其放入.class文件中.因此str3,str4将完全相同,并将被实习.

当使用只能在运行时进行求值的串联时(如第5行所示),结果String是一个新的String,必须与equals()新对象进行比较.