Java的equals()方法 [英] equals() method of java

查看:66
本文介绍了Java的equals()方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下测试程序。我创建了3个 Integer 引用。我创建2个 Integer 对象,并使引用i1和i2分别引用它们。我将参考i3等于i1。现在i1 equals()i3应该很正确,因为它们都引用堆上的同一对象。但是,为什么i1应该等于i2?它们是指两个不同对象。我缺少什么。

I've the following test program. I create 3 Integer references. I create 2 Integer objects and make references i1 and i2 refer them respectively. I make reference i3 equal to i1. Now i1 equals() i3 should be obviously true as they both refer to same object on heap. But why should i1 be equal() to i2 ? They are refering to two different objects. What am I missing.

文档说:


public boolean equals(Object obj)
     Indicates whether some other object is "equal to" this one.


public class Test{

    public static void main(String [] args)
    {
        Integer i1 = new Integer(10);
        Integer i2 = new Integer(10);
        Integer i3 = i1;

        if(i1.equals(i3)) // UNDERSTANDABLE
            System.out.println("equal");

        if(i1.equals(i2)) // prints equal. WHY !!!!!
            System.out.println("equal");    
}

}


推荐答案

包装类型的 equals()方法测试值相等性,如果要测试引用相等性,请使用 == 代替,例如

The equals() methods for the wrapper types test for value equality, if you want to test reference equality, use == instead, e.g.

System.out.println(new Integer(1) == new Integer(1));

这篇关于Java的equals()方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆