在equals()方法犯的错

来源:互联网 发布:mac倍速看视频 编辑:程序博客网 时间:2024/05/01 15:06

观察下述代码:

Integer a = new Integer(0);Integer b = new Integer(0);Long c = new Long(0);System.out.println(a==b);System.out.println(a.equals(b));System.out.println(a.equals(c));System.out.println(a.equals(0));

输出结果为:

结果 解释 false ==比较的是两个变量(对于对象类型)的内存地址,而不是内容 true equals比较两个对象的内容 false 两个变量不是同一个类型 true 0自动包装了




equals():比较两个相同类型
观察源码:

//Integer源码public boolean equals(Object obj) {        //如果不是Integer类型则会返回false        if (obj instanceof Integer) {            return value == ((Integer)obj).intValue();        }        return false;    }
0 0
原创粉丝点击