Java字符串比较取决于对象初始化
以下代码:Java字符串比较取决于对象初始化,java,string,equals,Java,String,Equals,以下代码: String a = new String("aaa"); String a2 = new String("aaa"); System.out.println(a == a2); String b = "bbb"; String b2 = "bbb"; System.out.println(b == b2); 产生以下输出: false true 为什么根据字符串创建的类型,比较a==a2和b==b2的输出会有差异?当您声明a和a
String a = new String("aaa");
String a2 = new String("aaa");
System.out.println(a == a2);
String b = "bbb";
String b2 = "bbb";
System.out.println(b == b2);
产生以下输出:
false
true
为什么根据字符串创建的类型,比较a==a2和b==b2的输出会有差异?当您声明
a
和a2
时,您会显式地创建新的(不同的)字符串。使用构造函数会导致复制。因此,=
会失败,因为a
和a2
指向不同的值
当您声明b
和b2
时,b2
可以重新使用池中的相同字符串。因此,它们实际上指向相同的值,=
返回true
查看或获取详细答案。谢谢!两年的工作经验,我不知道functionallitz关于string:D的事,不用担心。对我来说也是这样。请随意接受答案:)