0
点赞
收藏
分享

微信扫一扫

深入浅出Java基本数据类型

棒锤_45f2 2022-03-12 阅读 129

引子

我们都知道Java中存在8种基本数据类型,但是大家对基本数据类型的认识可能依然不够全面。

正文

数据类型数据长度代表含义默认值取值包装类
byte8位(bit)字节型0-128~127Byte
short16位2字节(byte)短整数型0-32768~32767Short
int32位4字节整数型0-2147483648~2147483647Integer
long64位8字节长整数型0L-9223372036854775808~9223372036854775807Long
float32位单精度浮点型0.0f1.4E-45~3.4028235E38FLoat
double64位双精度浮点型0.0d4.9E-324~1.7976931348623157E308Double
boolean1位布尔型0(false)0(false)~1(true)Boolean
char16位字符型\u0000\u0000~\uFFFFCharacter

上面的一览表中对基本数据类型做了一次基本介绍,除此以外还有一些小细节

包装类

包装类和基本数据类型有什么区别呢?
1.包装类符合面向对象的设计原则,作为对象就会存在很多实用的方法
例:equals()、getClass()、toString()、hashCode()
2.包装类都实现了序列化接口
在这里插入图片描述3.泛型
只有对象才能作为泛型,如下
在这里插入图片描述
4.包装类为你提供了非常好用的valueOf()方法,满足了你大部分的需求

如何选择包装类和基本数据类型呢

推荐全局变量使用包装类,只有局部变量使用基本数据类型

高频缓存区间

当你抛弃基本数据类型使用基本数据的包装类时,会发现有些时候会出现奇怪的事,如下

        Integer a = 127;
        Integer b = 123;
        Integer c = 127;
        Integer d = 128;
        Integer e = 128;
        System.out.println(a == b);// false
        System.out.println(a == c);// true
        System.out.println(d == e);// false

这种情况就是因为包装类的高频缓存导致的,即
当Integer的值处于-128~127之间时,多个对象会复用同一堆空间内存引用

所有包装类的高频缓存区间如下
Boolean:当你使用静态 final 定义变量时,就会返回静态值
Byte: -128~127
Short:-128~127
Character:0~127
Long:-128~127
Integer:-128~127

同时,Integer的高频缓存区间可以通过在VM optons 中加入参数进行修改
-XX:AutoBoxCacheMax=999 即可将缓存最大值修改为999
Float和Double不存在高频缓存

最后更新于2022年3月8日
原创不易,如果该文章对你有所帮助,望左上角点击关注~如有任何技术相关问题,可通过评论联系我讨论,我会在力所能及之内进行相应回复以及开单章解决该问题.

该文章如有任何错误请在评论中指出,感激不尽,转载请附出处!
个人博客首页:https://blog.csdn.net/yjrguxing ——您的每个关注和评论都对我意义重大

举报

相关推荐

0 条评论