示例代码

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);
}

区别

  1. Integer 是引用类型,int是基本类型
  2. Ingeter是int的包装类,内部封装持有一个int类型的值。int的初值为0,Ingeter的初值为null。
  3. 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的比较,谈谈拆卸和装箱相关推荐

  1. Java经典面试题—— int 和 Integer 有什么区别?谈谈 Integer 的值缓存范围

    典型回答 int 是我们常说的整型数字,是 Java 的 8 个原始数据类型(PrimitiveTypes,boolean.char.byte.short.int.long.float 和 doubl ...

  2. Integer vs int

    http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html 如果面试官问Integer与int的区别:估计大多数人只会说道 ...

  3. integer比较_傻傻分不清?Integer、new Integer() 和 int 的面试题

    基本概念的区分 1.Integer 是 int 的包装类,int 则是 java 的一种基本数据类型 2.Integer 变量必须实例化后才能使用,而int变量不需要 3.Integer 实际是对象的 ...

  4. java integer int 比较_java Integer和int之间的比较问题是什么?

    展开全部 java Integer和int之间e68a84e8a2ad3231313335323631343130323136353331333365633864==的比较问题.求解释 public ...

  5. Integer 和 int 比较的特殊之处

    2019独角兽企业重金招聘Python工程师标准>>> 第一个例子:  假设我们同时定义  int a = 3;  int b = 3; 编译器先处理int a = 3: 首先它会在 ...

  6. (备忘)Java数据类型中String、Integer、int相互间的转换

    1.Integer转换成int的方法 Integer i; int k = i.intValue(); 即Integer.intValue(); 2.int转换成Integer int i; Inte ...

  7. Integer 和 int的种种比较

    public static void main(String[] args) {int i = 128;Integer i2 = 128;Integer i3 = new Integer(128);/ ...

  8. Java数据类型中String、Integer、int相互间的转换

    1.Integer转换成int的方法 Integer i;  int k = i.intValue(); 即Integer.intValue(); 2.int转换成Integer int i; Int ...

  9. String 和Integer、int之间互转

    String转Integer String str = "10"; Integer it = Integer.valueOf(str); Integer转String Intege ...

最新文章

  1. 【Linux入门到精通系列讲解】内存管理malloc和free函数
  2. 编写一个函数,输入n为偶数时,调用方法求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n...
  3. 打印系统里所有不包含任何错误的order list
  4. python判断ip能否ping通_使用Python测试Ping主机IP和某端口是否开放的实例
  5. python数据集的预处理_关于Pytorch的MNIST数据集的预处理详解
  6. 企业数据化应用的第一步,你需要报表管理平台
  7. UJAM Virtual Guitarist SILK for mac(尼龙弦原声吉他)
  8. 学习笔记(02):19年录制Zookeeper、Dubbo视频教程 微服务教程分布式教程 SpringBoot教程整合-传统互联网架构到分布式架构的架构演变...
  9. 计算机中键盘可以共享吗,两个电脑怎么共用一个键盘
  10. android手机计步器开发,超精准的Android手机计步器开发
  11. 未来十年中国经济十大发展趋势
  12. Postman测试导出导入Excel教程
  13. 中国大学生在线官方微博入围全国十大中央机构微博、全国十大教育微博
  14. mysql 8.0.22详细安装步骤
  15. 禁用搜狗输入法Linux版的Ctrl+Shift+F的简繁切换快捷键
  16. survival | 生存分析(3):生存曲线(下)
  17. 对数字化转型的部分认知(一)
  18. 腾讯云服务器Ubuntu系统如何使用 root 用户远程登录
  19. spark系列11:RDD之间的依赖关系,窄依赖和宽依赖
  20. SI 539 网站开发(二):week6

热门文章

  1. CF785E Anton and Permutation
  2. 基站建设(三元环计数+根号分治 / bitset)
  3. P1791-[国家集训队]人员雇佣【最大权闭合图】
  4. YbtOJ#943-平方约数【莫比乌斯反演,平衡规划】
  5. Ybt#452-序列合并【期望dp】
  6. jzoj3833-平坦的折线【模型转换,LIS】
  7. 奶牛的交叉路(jzoj 1756)
  8. Network of Schools POJ - 1236 tarjan强连通分量缩点
  9. 21、mysql修改密码的方法总结
  10. Spring Boot 热部署入门