1

可能重复:
等于和 == 之间的差异

在哪些情况下与操作员equals()完全一样==

似乎他们俩的行为相似primitive data types。是否还有其他任何情况下两者行为相同?

4

6 回答 6

4

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

例如

Integer对于值 -128 和 127(含),它会缓存(在自动装箱时)实例,因此这里提到的值范围就是这种情况Integer

于 2012-06-13T10:34:34.137 回答
3

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

默认实现(在 Object 类中)equals()只是进行对象身份检查(即与 相同==)。因此,如果一个类不覆盖它,它将具有与==.

于 2012-06-13T10:36:02.273 回答
1

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

请注意,原始数组 likeint[]仍然是一个对象!

于 2012-06-13T10:35:42.953 回答
1
    String test1 ="test";
    String test2 = test1;
    System.out.println(test1 == test2);
    System.out.println(test1.equals(test2));

两者都会打印 -

真的

真的

于 2012-06-13T10:36:37.313 回答
1

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

  • 实习字符串
  • 某些Integer引用(通常在 -128 和 +127 之间,但这是可配置的,并且取决于实例的构造方式)
  • 单身人士
  • Object(以及任何其他不覆盖的类equals())的实例

显然,当有疑问时,使用equals()

于 2012-06-13T10:37:00.823 回答
0

该方法对比较equals()进行评估。hashCodeWhile==通过引用比较对象。

于 2012-06-13T10:42:23.893 回答