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

Java 虽然是面向对象的编程语言,但是依旧保留了一些原始数据类型,同时为了兼容java面向对象的特性,每种原始数据类型,都有对应的包装类型。

原始数据类型:boolean、char、byte、short、int、long、float、double
包装类型:Boolean、Character、Byte、Short、Integer、Long、Float、Double

包装类型是对原始数据类型的一种封装,包含对原始类型数据的存储、基本操作以及两种类型直接的转换。Java5中,引入了 自动装箱和自动拆箱 功能(boxing/unboxing),Java可以根据上下文,自动进行转换,极大的简化了相关的编程。

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

关于Integer的值缓存,是Java5中的一个改进。构造一个Integer对象的正常操作应该是直接使用Integer的构造器,new一个对象出来。但是根据具体实践,大部分的操作都较为集中在有限且较小的数值范围。因此,Java5中新增了静态工厂方法 valueOf,在调用它的时候会利用一个缓存机制。缓存的数值范围为[-128, 127]

Java



Copyright 2019-2020 YANLIANG'S BLOG 载入天数...载入时分秒...