Java里包装类型可以和基本类型直接用==号比较吗?

如题所述

先来看看  等号(==)和 equals() 的区别



    等号(==)

     

对比对象实例的内存地址来判断是否是同一对象实例;也可以说是判断对象实例是否物理相等。 

 

    equals() 

 

当对象没有重写Object的equals方法时,equals方法判断的是对象实例的ID,也就是内存地址,是否是同一对象实例;

 

该方法就是使用等号(==)的判断结果。

 

Object类的源码如下:


public boolean equals(Object obj) { 
     return (this == obj);
}

       

当对象所属的类重写equals方法时,要根据自身逻辑来判断是否相等。 



而 Java里包装类型可以和基本类型直接用==号比较吗?


我们再来看个示例  




但是




可以看出 java.lang.Integer 这个包装类型, 还是使用 java.lang.Integer.equals(Object) 吧


追问

。。。。。。

追答

你追问了什么?

追问

那基本类型和引用类型比较呢?

追答


看上面的结果 


虽然 JDK 自动装箱拆箱 比较 引用类型==基本类型 看上去没有问题


但是 只要涉及到 引用类型, 建议都使用 equals 来比较

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-09-04
基本类型和包装类使用==比较的是值