我不确定这是否是一个重复的问题(我找不到类似的东西),但是我已经在两个不同的IDE中对两个具有相同值的独立字符串使用==运算符进行了测试,工作了吗我对以下代码片段特别困惑:
public static void main(String args[]) {
String s1 = new String("aaab");
String s2 = new String("aaa");
System.out.println(Integer.toHexString(s1.hashCode()));
System.out.println(Integer.toHexString(s2.hashCode()));
s2 += "b";
System.out.println(Integer.toHexString(s1.hashCode()));
System.out.println(Integer.toHexString(s2.hashCode()));
Boolean b = s1==s2;
System.out.println(s1==s2);
System.out.println(b);
if (s1.equals(s2)){
System.out.println("this works");
}
}
(对不起,如果我的格式有点烂) 对我来说,控制台输出是
2d9041
17841
2d9041
2d9041
false
false
this works
(我知道不同的人的内存地址可能有所不同,关键是两者之间的相似性)这个输出对我来说没有意义? s1 == s2是否应该因为内存地址相同而返回true?这是OS / Windows吗?还是IDE的东西?抱歉,问题很长,谢谢您的回答