【问题标题】:why hashCode() comparison is true and just comparison is false for two variables with string values?为什么 hashCode() 比较为真,而对于具有字符串值的两个变量,只是比较为假?
【发布时间】:2014-06-19 23:16:21
【问题描述】:
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... .hashCode 的 s3 和 s4 相同,但 s3==s4 给出 false 。谁来解释。我需要一个不正确格式 cmets 的答案而不是无用的问题。不知道答案的人远离这个问题。

【问题讨论】:

标签: java hashcode


【解决方案1】:
  1. 无法使用 == 运算符比较 Java 字符串,因为它只比较引用。使用 s3.equals(s4) 进行字符串比较重载。
  2. 我猜s3.hashCode() == s4.hashCode() 的计算结果为 true,因为它比较整数,而整数在 Java 中是按值进行比较的。

【讨论】:

  • s3.hashCode() == s4.hashCode() evalutase为true,因为hashCode()返回一个int,可以和==进行比较
  • 对,很明显:)反正int可以和==比较,字符串不行(只要你对内容感兴趣,而不是引用)。
猜你喜欢
  • 2020-09-04
  • 2012-04-14
  • 2011-06-21
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多