浅谈int和Integer有什么区别


前言

了解基本的数据类型,有助于我们再编程中更好的利用java提供的语法糖,实现更高效的代码。


一、int和Integer定义

我们大多数人都熟悉我们小学时代的整数概念。它是一个没有小数部分的值。
换句话说,整数与整数的集合相似,但也增加了负数。所以,它都是正负的非十进制数。
当我们谈论Java等计算机编程语言的整数时,我们讨论的是类似的东西。它是一个内存位置,或者位置,它拥有一个非小数或非小数或数字,无论是正的还是负的。
Integer 是 int 对应的包装类,它有一个 int 类型的字段存储数据,并且提供了基本操作,比如数学运算、int 和字符串之间转换等。在 Java 5 中,引入了自动装箱和自动拆箱功能(boxing/unboxing),Java 可以根据上下文,自动进行转换,极大地简化了相关编程。

二、扩展

Java 的 8 个原始数据类型(Primitive Types,boolean、byte 、short、char、int、float、double、long)。Java 语言虽然号称一切都是对象,但原始数据类型是例外。
Integer 是 int 对应的包装类,它有一个 int 类型的字段存储数据,并且提供了基本操作,比如数学运算、int 和字符串之间转换等。在 Java 5 中,引入了自动装箱和自动拆箱功能(boxing/unboxing),Java 可以根据上下文,自动进行转换,极大地简化了相关编程。

关于 Integer 的值缓存,这涉及 Java 5 中另一个改进。构建 Integer 对象的传统方式是直接调用构造器,直接 new 一个对象。但是根据实践,我们发现大部分数据操作都是集中在有限的、较小的数值范围,因而,在 Java 5 中新增了静态工厂方法 valueOf,在调用它的时候会利用一个缓存机制,带来了明显的性能改进。按照 Javadoc,这个值默认缓存是 -128 到 127 之间。

缓存机制并不是只有 Integer 才有,同样存在于其他的一些包装类,比如:

Boolean,缓存了 true/false 对应实例,确切说,只会返回两个常量实例 Boolean.TRUE/FALSE。

Short,同样是缓存了 -128 到 127 之间的数值。

Byte,数值有限,所以全部都被缓存。

Character,缓存范围’\u0000’ 到 ‘\u007F’。

扫描二维码关注公众号,回复: 12098881 查看本文章

总结

1 大数据情况下要慎用拆箱,封箱

猜你喜欢

转载自blog.csdn.net/aa327056812/article/details/109520103