【发布时间】:2025-11-26 03:55:02
【问题描述】:
我们制作以下 String 对象?
String str1 = new String("ABC");
String str2 = new String("ABC");
String str3 = "ABC";
String str4 = "ABC";
上面两个问题:
system.out.println("valof str1 "+str1 );-- 将str1打印为 ABC 但是当我们比较if(str1==str2)时,它比较的是字符串对象的引用。如何 jvm 有什么不同?str1与str2和str3的引用不同,但str3和str4具有相同的引用,因此 jvm 会检查我们要使用相等运算符创建的字符串是否(而不是 new ) 已经存在(如果它存在,它不会创建新对象,只需将相同的引用分配给新变量,即str4),但它不会在新运算符的情况下进行此验证?
【问题讨论】: