为什么hashCode()比较为真,只有两个带字符串值的变量的比较为假?

时间:2014-05-03 08:53:32

标签: java hashcode

public class a {
public static void main(String args[]){
final String s1="job";
final String s2="seeker";
String s3=s1.concat(s2);
String s4="jobseeker";
System.out.println(s3==s4);=> false
System.out.println(s3.hashCode()==s4.hashCode());=>true
System.out.println(s3.hashCode());=>2201324
System.out.println(s4.hashCode());=>2201324

}
}

" =="比较对象的hashCode ... s3和s4的.hashCode是相同的,但s3 == s4给出false。有人解释。我需要一个答案而不是无用的问题,而不是格式正确的评论。不懂答案的人远离这个问题。

1 个答案:

答案 0 :(得分:0)

  1. 使用==运算符无法比较Java字符串,因为它只比较引用。使用s3.equals(s4)进行字符串比较重载。
  2. 我认为s3.hashCode() == s4.hashCode()的计算结果为true,因为它会比较整数,这些整数在Java中按值进行比较。