Java Integer及int装箱拆箱对比

编程之家收集整理的这篇文章主要介绍了Java Integer及int装箱拆箱对比编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这篇文章主要介绍了Java Integer及int装箱拆箱对比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

示例代码

class BoxIntInteger { public static void main(String[] args) { Integer a = new Integer(10111); int b = 10111; boolean equal1 = a == b; boolean equal2 = a.equals(b); 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使用==比较大小的话,优先Integer拆箱。

2: 如果使用equals比较大小的话,则int装箱。

提示:对于Integer与int之间大小比较优先使用equals比较,否则容易出现空指针,例如:

Integer c= null;

System.out.println(c==1);

原因:由于Integer需要调用intValue进行拆箱,因而空指针。

Integer与Integer必须使用equals方法比较,这个就不必解释了。但是通常我们可以看先Integer与Integer之间使用==也可以正确比较,原因是:Integer对于-128到127之间的数字在缓存中拿,不是创建新对象。

缓存获取数据源码:java.lang.Integer#valueOf(int)

public static Integer valueOf(int i) { if (i >= IntegerCache.low && i

总结

以上是编程之家为你收集整理的Java Integer及int装箱拆箱对比全部内容,希望文章能够帮你解决Java Integer及int装箱拆箱对比所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

Java相关文章

使用SpringBoot2.x配置静态文件缓存
Java动态代理四种实现方式详解
Eclipse开发JavaWeb项目配置Tomcat的方法步骤
详解领域驱动设计之事件驱动与CQRS
SpringBoot全局配置long转String丢失精度的问题解决
springboot yml定义属性,下文中${} 引用说明
IDEA解决Java:程序包xxxx不存在的问题
编程语言榜单Java与Python并列第二!Julia下滑
MyBatis Log 插件无法显示SQL语句的原因解析
jsp response.sendRedirect()用法详解
使用springboot访问图片本地路径并映射成url
springboot文件虚拟路径映射方式