【Java】 “==”和“equals”的区别随记

对于基本类型引用类型 == 的作用效果是不同的,如下所示:

基本类型:比较的是值是否相同

引用类型:比较的是引用是否相同

quals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。

== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重写了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。

两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

不对,两个对象的 hashCode()相同,equals()不一定 true。

  1. String str1 = "通话";
  2. String str2 = "重地";
  3. System.out.println(String.format("str1:%d | str2:%d", str1.hashCode(),str2.hashCode()));
  4. System.out.println(str1.equals(str2));

执行的结果:

  1. str1:1179395 | str2:1179395
  2. false


版权声明:本文为qq_38119124原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。