前段时间educoder上遇到的题目------关于基本数据类型与其包装类在“==”与equals上的比较困扰了我很久,以下是我的理解:
先看题
首先粗略的理解:
a与b都是包装类,a与b对象的地址空间不同(a刚刚new了一个新地址,它们指向的地址肯定不同)。
== 比较的是引用变量的地址,所以第一个与第五个为假(地址不同)。
包装类和String一样都是重写了Object类中的equals方法,因此比较的是内容而不是地址,所以第四和第六个为真。
当包装类与其基本类型进行 =.= 时会自动拆箱处理,从而比较基本数据类型。所以第2、3都为
两个基本型的封装型进行是equals比较,首先型进行比较类型,如果类型相同,则继续比较值,如果值也相同,返回true。
总结