Java中的字符串何时是不同的对象?

mat*_*ijs 1 java string memory-management string-comparison

我最近在Java中了解到:==比较对象引用,而不是内容,这就是为什么:

String str1 = "hell";
String str2 = "o";
String str3 = str1 + str2;
String str4 = "hello";

str3 == str4; // False
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是,当我执行以下操作时:

String str5 = "hello";
str5 == str4; // True
Run Code Online (Sandbox Code Playgroud)

这是否意味着str5和str4引用相同的内存对象?这是如何运作的?

Kon*_*kov 6

String str5 = "hello";创建一个汇集字符串值hello,这就是为什么str5 == str4回报true.

另一方面,这样的str1 + str2工作:

更多信息: