Java基础 - Integer和int的区别
2023-04-18 16:07:46 时间
一、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变量的比较。
三、总结
Integer 是 int 的包装类,它们的区别主要体现在 5 个方面:数据类型不同、默认值不同、内存中存储的方式不同、实例化方式不同以及变量的比较方式不同。包装类的存在解决了基本数据类型无法做到的事情泛型类型参数、序列化、类型
转换、高频区间数据缓存等问题。
相关文章
- java中try-catch的使用
- java基础:public是什么?
- Java中Lock原理探究以及调用过程
- eclipse导入java项目
- java求圆的面积代码
- java程序怎么运行
- java中&和&&有什么区别
- java数组怎么定义
- java中Scanner获取字符串的方法
- java项目使用eclipse建立的方法
- Java二维数组初始化的方法详解
- Java中锁有哪些面试题?
- [1076]使用IntelliJ IDEA配置Tomcat
- [1078]Win10配置Java环境变量
- [1084]windows搭建clojure开发环境
- Java基础里的@Target是什么?怎么用?
- 面试官:int和Integer有什么区别?为什么要有包装类?
- Java Review - 并发编程_JDK 8新增的原子操作类LongAdder & LongAccumulator
- Java设计模式之(十)——组合模式
- Java设计模式之(十一)——享元模式