Java 在哪些情况下,equals()与==?

Java 在哪些情况下,equals()与==?,java,Java,可能重复: 在哪些情况下,equals与==运算符完全相同 对于原始数据类型,它们的行为似乎相似。在其他情况下,他们两人的行为是平等的吗 ==比较对象类型的引用位,因此,如果您有对同一对象的引用,则情况就是这样 比如说 Integer for value-128和127(包括128和127)在自动装箱实例时缓存,因此此处所述的Integer值范围就是这种情况。比较对象类型的引用位,因此,如果您对同一对象有引用,则会是这种情况 比如说 Integer for value-128和127(包括12

可能重复:

在哪些情况下,equals与==运算符完全相同

对于原始数据类型,它们的行为似乎相似。在其他情况下,他们两人的行为是平等的吗

==比较对象类型的引用位,因此,如果您有对同一对象的引用,则情况就是这样

比如说

Integer for value-128和127(包括128和127)在自动装箱实例时缓存,因此此处所述的Integer值范围就是这种情况。比较对象类型的引用位,因此,如果您对同一对象有引用,则会是这种情况

比如说

Integer for value-128和127(包括128和127)在自动装箱实例时会缓存,因此对于所提到的Integer值范围,这里就是这种情况。运算符==将始终比较对象的引用和基元类型的实际值

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

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


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

对于基本数据类型,没有相等项,因为它们不是对象,也没有方法


equals类对象中的默认实现只是进行对象标识检查,即与==相同。因此,如果一个类不重写它,它将得到与==”相同的结果。

对于基本数据类型,没有等于,因为它们不是对象,也没有方法

equals类对象中的默认实现只是进行对象标识检查,即与==相同。因此,如果一个类不重写它,它将得到与==相同的结果

两者均会列印—

真的

真的

两者均会列印—

真的


true

除了特殊情况==和equals的原语外,对于引用等式与实际等式相同的每种情况,equals的行为都类似:

内接弦 某些整数引用通常介于-128和+127之间,但这是可配置的,并且取决于实例的构造方式 单身汉 对象和任何其他不重写equals的类的实例
显然,当有疑问时,除了作为特例的原语==之外,使用equals

,对于引用等式与实际等式相同的每种情况,equals的行为都类似:

内接弦 某些整数引用通常介于-128和+127之间,但这是可配置的,并且取决于实例的构造方式 单身汉 对象和任何其他不重写equals的类的实例
显然,如果有疑问,请使用equals

equals方法根据哈希代码比较进行计算。While==通过引用比较对象。

equals方法根据哈希代码比较进行计算。While==通过引用比较对象。

除非您使用新的整数来创建这些实例。它不必精确为-128到127,这取决于整数类的实现。@JIV我说的是sun JDKunless中的java.lang.Integer。您使用新的整数来创建这些实例。它不必精确为-128到127,取决于整型类的实现。@JIV我说的是sun JDKif中的java.lang.Integer,如果您比较字符串,我认为使用equal进行比较要好得多。不是吗?如果你想比较两个字符串对象的值,那么我们一定要使用equal。如果你比较字符串,我认为使用equal比较更好。不是吗?如果你想比较两个字符串对象的值,那么我们必须使用equal。对于整数引用,这取决于引用是如何创建的;e、 g.new Integer1==new Integer1的计算结果为false。显然。老实说,有时整数的内接并不是最好的特性。我几乎更希望它只发生在自动装箱期间。如果你用反射玩一些下流的把戏,你可以打破单身的单身性。@Sean Reilly除了原语之外,原语是一种特殊情况==和equals,它们在每种情况下的行为都类似。-基本数据类型没有equals方法。对于整数引用,它取决于引用的创建方式;e、 g.new Integer1==new Integer1的计算结果为false。显然。老实说,有时整数的内接并不是最好的特性。我几乎更希望它只发生在自动装箱期间。如果你用反射玩一些下流的把戏,你可以打破单身的单身性。@Sean Reilly除了原语之外,原语是一种特殊情况==和equals,它们在每种情况下的行为都类似。-原始数据类型没有equals方法。这是唯一严格准确的答案。所有其他情况取决于对象的创建/管理方式。这是唯一严格准确的答案。所有其他情况取决于对象的创建/管理方式。Th
答案没有意义。这个答案没有意义。
    String test1 ="test";
    String test2 = test1;
    System.out.println(test1 == test2);
    System.out.println(test1.equals(test2));