new Integer(123)==new Integer(123);
为false,首先看一下Integer的构造方法:
public Integer(int value) {
this.value = value;
}
无论是创建Integer时传入的参数是多少,他都会将创建一个新的Integer对象,所以对象的引用也就不同,结果为false
new Integer(123)==123结果为true原因:
在进行判断的时候回自动将Integer进行拆箱操作,所以判断的是123==123结果为true
封装类型和基本类型做==操作,会自动将封装类型转换为基本类型,然后比较的是值的比较。
两个封装类型做==比较,与其他对象进行==一样,对比两个对象的地址,以及两个引用是否指向同一对象。
equals如果是封装类型和基本类型作比较,则是将基本类型i进行自动装箱,然后,执行equals方法,其实比较的是两个Integer对象中的value值。所以结果为true.