只要能找到对应的类,就是引用数据类型
否则就是原生数据类型
原生数据类型(没有类与之对应的类型)
一个字节八位
整数
- byte, 一个字节
- short, 两个字节
- int, 四个字节
- long, 八个字节
浮点数 ==> 近似表达【只能比较大小,不能比较相等】
- float, 四个字节(浮点数)
- double, 八个字节(双精度浮点数)
特殊类型
- char, 两个字节
- boolean, true/false
- void
引用数据类型(对象)
String
类型转换与类型提升
-
整数除法是地板除【整数除法还是整数,只取整数部分】
image.png
先把a转换成double,然后进行运算
image.png
- 将所有类型提升到最高精度进行计算
- 丢失精度时需要进行强制转换
强制类型转换
image.png
提升精度
image.png
- char参与计算时使用ASCII码(Unicode码)
为什么需要引用类型
为什么要存在装箱类型
- 容器类不接受原生数据类型
- 可以赋值为null
- 提供额外的方法
- 自动装箱和拆箱
坑
- 对null拆箱将引发空指针异常
- == 与 equals 约定
- == 对比同一性(基础类型数值或者引用类型的地址是否相等)
- equals ,根据类定义。对比值是否相等。
在Interger中,存在IntegerCache(-128 ~ 127之间数值缓存),故此区间的数值操作是赋予缓存地址形式。
image.png








网友评论