Integer是int的包装类,而int是Java的一种基本数据类型。

int变量不需要实例化,Integer变量必须实例化才可以使用。

Integer是对象的引用,当new了一个Integer之后,实际上是生成了一个指针,该指针指向此对象,int则是直接存储数据的数值。

Integer默认值为null,int默认值为0。

通过new生成的两个Integer对象永远不相等,因为是两个对象,内存地址不同。

Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(Integer与int比较时,Java会自动拆包,实际上变成了两个int在比较)

非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。(因为非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同)

两个非new生成的Integer对象比较数值的时候,如果值在-128到127之间,返回true,其余范围则返回false。

版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!