我在下面有一个例子:
public static void main(String[] args) {
String a = "abc@gmail.com";
System.out.println(a.hashCode());
System.out.println(String.format("%x%n", a.hashCode()));
String text1 = String.format("%x%n", a.hashCode());
String text2 = "9f4e93d3";
if (text1.equals(text2)) {
System.out.println("equals");
} else {
System.out.println("not equals");
}
}
我的结果:
-1622240301
9f4e93d3
not equals
我不知道为什么我的代码不输出“等于”。有人可以为我解释吗?
谢谢。
答案 0 :(得分:2)
如果将.trim()用作“ text1.trim()”,则可以达到“等于”。像这个。 在9f4e93d3之后,text1的值还包含更多字符。
text1是 9f4e93d3 \ r \ n
text2只是 9f4e93d3
如果您在调试模式下运行此应用,则可以轻松查看。
public static void main(String[] args) {
String a = "abc@gmail.com";
// System.out.println(a.hashCode());
// System.out.println(String.format("%x%n", a.hashCode()));
String text1 = String.format("%x%n", a.hashCode());
String text2 = "9f4e93d3";
System.out.println(text1+"-"+text2);
if (text1.trim().equals(text2)) {
System.out.println("equals");
} else {
System.out.println("not equals");
}
}
输出:
9f4e93d3
-9f4e93d3
equals
答案 1 :(得分:1)
text1.length()= 9(text1 = 9f4e93d3 \ n )
text2.length()= 8(text2 = 9f4e93d3 ),
由于没有相同的text1,equals(text2)的计算结果为false。