Integer和Int的比较,谈谈拆卸和装箱
示例代码
public static void main(String[] args) {Integer a = new Integer(10111);int b = 10111;boolean equal1 = a == b;//自动拆箱,xxxValue()boolean equal2 = a.equals(b);//自动装箱, valueOf()System.out.println(equal1);System.out.println(equal2);
}
反编译后
public static void main(String args[])
{Integer a = new Integer(10111);int b = 10111;boolean equal1 = a.intValue() == b; //自动拆箱boolean equal2 = a.equals(Integer.valueOf(b));//自动装箱System.out.println(equal1);System.out.println(equal2);
}
区别
- Integer 是引用类型,int是基本类型
- Ingeter是int的包装类,内部封装持有一个int类型的值。int的初值为0,Ingeter的初值为null。
- Integer是引用类型,Integer间的比较必须用 equals()
拆箱
当 Integer a 与 int b 进行运算时,如:比较、加减等,会自动拆箱,即获取a持有的 int 值,然后再与 b 进行运算。
包装类型的拆箱通过 xxxValue() 方法实现,该方法直接返回包装的值。
xxx 代表基本数据类型,如:
Integer 的拆箱方法为 intValue()
public int intValue() {return value;
}
装箱
装箱通过valueOf() 实现,该方法可能会缓存部分值
如:Integer 默认会缓存 [-128, 127]的值,当通过 valueOf 创建一个 在[-128, 127]的 Integer 之后,会缓存该对象,再次创建该值的Integer会直接返回缓存中的对象,不会创建新对象
当 Integer a 和 int b,使用equals() 比较时,会自动装箱,将b封装成一个Integer
public static Integer valueOf(int i) {//默认情况下,i在[-128, 127]会直接返回缓存中的对象if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);
}
参考
- java中Integer与int装箱拆箱一点收获
- java面试题之int和Integer的区别
Integer和Int的比较,谈谈拆卸和装箱相关推荐
- Java经典面试题—— int 和 Integer 有什么区别?谈谈 Integer 的值缓存范围
典型回答 int 是我们常说的整型数字,是 Java 的 8 个原始数据类型(PrimitiveTypes,boolean.char.byte.short.int.long.float 和 doubl ...
- Integer vs int
http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html 如果面试官问Integer与int的区别:估计大多数人只会说道 ...
- integer比较_傻傻分不清?Integer、new Integer() 和 int 的面试题
基本概念的区分 1.Integer 是 int 的包装类,int 则是 java 的一种基本数据类型 2.Integer 变量必须实例化后才能使用,而int变量不需要 3.Integer 实际是对象的 ...
- java integer int 比较_java Integer和int之间的比较问题是什么?
展开全部 java Integer和int之间e68a84e8a2ad3231313335323631343130323136353331333365633864==的比较问题.求解释 public ...
- Integer 和 int 比较的特殊之处
2019独角兽企业重金招聘Python工程师标准>>> 第一个例子: 假设我们同时定义 int a = 3; int b = 3; 编译器先处理int a = 3: 首先它会在 ...
- (备忘)Java数据类型中String、Integer、int相互间的转换
1.Integer转换成int的方法 Integer i; int k = i.intValue(); 即Integer.intValue(); 2.int转换成Integer int i; Inte ...
- Integer 和 int的种种比较
public static void main(String[] args) {int i = 128;Integer i2 = 128;Integer i3 = new Integer(128);/ ...
- Java数据类型中String、Integer、int相互间的转换
1.Integer转换成int的方法 Integer i; int k = i.intValue(); 即Integer.intValue(); 2.int转换成Integer int i; Int ...
- String 和Integer、int之间互转
String转Integer String str = "10"; Integer it = Integer.valueOf(str); Integer转String Intege ...
最新文章
- 【Linux入门到精通系列讲解】内存管理malloc和free函数
- 编写一个函数,输入n为偶数时,调用方法求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n...
- 打印系统里所有不包含任何错误的order list
- python判断ip能否ping通_使用Python测试Ping主机IP和某端口是否开放的实例
- python数据集的预处理_关于Pytorch的MNIST数据集的预处理详解
- 企业数据化应用的第一步,你需要报表管理平台
- UJAM Virtual Guitarist SILK for mac(尼龙弦原声吉他)
- 学习笔记(02):19年录制Zookeeper、Dubbo视频教程 微服务教程分布式教程 SpringBoot教程整合-传统互联网架构到分布式架构的架构演变...
- 计算机中键盘可以共享吗,两个电脑怎么共用一个键盘
- android手机计步器开发,超精准的Android手机计步器开发
- 未来十年中国经济十大发展趋势
- Postman测试导出导入Excel教程
- 中国大学生在线官方微博入围全国十大中央机构微博、全国十大教育微博
- mysql 8.0.22详细安装步骤
- 禁用搜狗输入法Linux版的Ctrl+Shift+F的简繁切换快捷键
- survival | 生存分析(3):生存曲线(下)
- 对数字化转型的部分认知(一)
- 腾讯云服务器Ubuntu系统如何使用 root 用户远程登录
- spark系列11:RDD之间的依赖关系,窄依赖和宽依赖
- SI 539 网站开发(二):week6