int 和 Integer 有什么区别?谈谈 Integer 的值缓存范围

x33g5p2x  于2021-11-18 转载在 其他  
字(0.5k)|赞(0)|评价(0)|浏览(272)

面试有时候会问:
int 和 Integer 有什么区别?谈谈 Integer 的值缓存范围

1.典型回答

Java 的 8 个原始数据类型如下:

  • boolean
  • byte
  • short
  • int
  • float
  • double
  • char
  • long

int 类型也是原始类型之一,虽然Java 语言虽然号称一切都是对象,但原始数据类型是例外。

Integer 是 int 对应的包装类,它有一个 int 类型的字段存储数据,并且提供了基本操作,
比如数学运算、int 和字符串之间转换等。

在 Java 5 中,引入了自动装箱和自动拆箱功能(boxing/unboxing),Java 可以根据上下文,自动进行转换,极大地简化了相关编程。关于 Integer 的值缓存,这涉及 Java 5 中另一个改进。构建 Integer 对象的传统方式是直接调用构造器,直接 new 一个对象。

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

2.拓展

1.自动装箱拆箱

自动装箱实际上算是一种语法糖。什么是语法糖?可以简单理解为 Java 平台为我们自动进行了一些转换,

相关文章