new Integer(123)==new Integer(123)为false和new Integer(123)==123为true

来源:互联网 发布:北京网络 编辑:程序博客网 时间:2024/05/16 18:08

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.



阅读全文
0 0