Java中Integer和int有什么区别呢?
下文笔者讲述Integer和int之间的区别说明,如下所示
int和Integer区别
两者的区别主要体现在以下几个方面: 1、数据类型不同: int 是基础数据类型,而 Integer 是包装数据类型 2、默认值不同: int 的默认值是 0,而 Integer 的默认值是 null 3、内存中存储的方式不同: int 在内存中直接存储的是数据值 而Integer实际存储的是对象引用 当new 一个Integer时实际上是生成一个指针指向此对象 4、实例化方式不同: Integer必须实例化才可以使用 而int不需要 5、变量的比较方式不同: int可以使用 == 来对比两个变量是否相等 而Integer一定要使用 equals 来比较两个变量是否相等
Integer、new Integer()和int对比
1、两个new Integer()变量比较,永远是false 因为new生成的是两个对象,其内存地址不同 2、Integer变量 和 new Integer() 变量比较 ,永远为 false 因为 Integer变量 指向的是java常量池中的对象 而 new Integer() 的变量指向堆中新建的对象 两者在内存中的地址不同。 3、两个Integer 变量比较 如果两个变量的值在区间-128到127 之间,则比较结果为true 如果两个变量的值不在此区间,则比较结果为 false 注意事项: Integer i = 100 在编译时 会翻译成为 Integer i = Integer.valueOf(100) 而 java 对 Integer类型的 valueOf 的定义如下 java对于-128到127之间的数,会进行缓存。 所以 Integer i = 127 时,会将127进行缓存 下次再写Integer j = 127时,就会直接从缓存中取,就不会new 4、int变量与 Integer、new Integer()比较时 只要两个的值是相等的,则为true. 因为包装类Integer 和 基本数据类型int 比较时 java会自动拆包装为int 然后进行比较,实际上就变为两个int变量的比较
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。