int是原始数据类型,Integer是对应的包装类,存储了对应的int数据,并且有自动拆装箱功能

可以根据上下文进行自动的转换

int还有着一个默认缓存

图片

设置默认缓存-128到127的int值,对于缓存的大小可以调整对应的缓存上限值,-XX:AutoBoxCacheMax=N

类似的考法有:

Java的自动拆装箱阶段

静态工厂的valueof可以触发缓存机制吗

原始类型和拆装箱类型的性能区别呢?

常见的缓存池范围有

Boolean true/false

Short -128到127

Byte 同上

Character 缓存 \u0000到 \u007F

但是由于包装类型是一个引用类型

带有着对应的对象头,所以建议避免无意中的拆箱和装箱行为,尤其是性能比较敏感的时候

对于原始数据类型,其实也并不是线程安全

尤其是对应32位的机器上的大数据类型,可能出现只更新了一半的数据位的情况

Java对于原始数据类型,是有着一些缺陷的.

原始数据类型并不能和Java泛型进行配合使用

因为Java的泛型是一种伪泛型,所以必须要保泛型中的数据类型是Object的子类

发表评论

邮箱地址不会被公开。 必填项已用*标注