String s1 = "a"; String s2 = "b"; String str6 = s1 + s2; System.out.println(str6 == "ab");

2024-11-20 12:26:10
推荐回答(2个)
回答1:

String比较特殊,之前的s1和s2是在【栈】中,属于变量;str6属于对象,因为String不可以增加或者删减在创建后,所以s1+s2的结果是相当于创建了个String对象str6,此时str6存在于【堆】中,所以说,2者不同。
【==】比较的是 值
【equals】比较的是 地址

回答2:

因为他们的值是相同的,但是他们的物理地址不同,不是一个对象,并不能认为是完全的相等(“==”)。
java中字符串比较推荐用equals,例如str6.equals("ab")