在哪种情况下equals()类似于==?

时间:2012-06-13 10:32:59

标签: java

  

可能重复:
  Difference Between Equals and ==

在哪种情况下equals()==运算符完全相同?

它们似乎对primitive data types的行为相似。还有其他两种情况都是平等的吗?

6 个答案:

答案 0 :(得分:4)

==比较Object类型的引用位,因此如果您引用相同的Object,则情况就是这样

例如

Integer对于值-128和127(包括)它缓存(同时自动装箱)实例,因此对于上面提到的Integer

值范围就是这种情况

答案 1 :(得分:3)

对于原始数据类型,没有equals()(因为它们不是对象,没有方法)。

equals()的默认实现(在类Object中)只进行对象标识检查(即与==相同)。因此,如果某个类没有覆盖它,它将与==具有相同的结果。

答案 2 :(得分:1)

运算符==将始终比较对象的引用和基元类型的实际值。

请注意,像int[]这样的基元数组仍然是一个对象!

答案 3 :(得分:1)

    String test1 ="test";
    String test2 = test1;
    System.out.println(test1 == test2);
    System.out.println(test1.equals(test2));

两者都会打印 -

答案 4 :(得分:1)

除了原语(这是一种特殊情况)之外,==equals()对于引用相等与实际相等的每种情况都表现相似:

  • Interned Strings
  • 某些Integer引用(通常介于-128和+127之间,但这是可配置的,它取决于实例的构造方式)
  • 单身
  • Object(以及任何其他未覆盖equals()的类的实例)

显然,如有疑问,请使用equals()

答案 5 :(得分:0)

equals()方法评估hashCode比较。虽然==通过引用比较对象。