数据类型
两大类型
基本数据类型
整型
类型 | 占用空间 | 范围 | 备注 |
byte | 1字节=8位 | -128~127,占用2^8=256空间 | 没有无符号类型 |
short | 2字节=16位 | 约为±30000,占用2^16空间 | 没有无符号类型 |
int | 4字节=32位 | 约为±21亿,占用2^32空间 | Java中默认的类型 |
long | 8字节=64位 | 很大很大,占用2^64空间 | 没有无符号类型 |
浮点型
类型 | 占用空间 | 小数位数 | 备注 |
float (单精度) | 4字节 | 6~7位小数 | 定义float变量要加后缀f或F |
double (双精度) | 8字节 | 15位小数 | Java中默认的类型 |
字符型
类型 | 占用空间 | 备注 |
char | 2字节 | 只能存储单个字符,单引号 '' |
布尔型
类型 | 占用空间 | 备注 |
boolean | 1字节或4字节或1位 | 不同的虚拟机规范占用的空间也不同 |
引用数据类型
对象
数组
类型转换
转换规则
![](https://img-blog.csdnimg.cn/img_convert/c09ac2ffb91b074346d7a2b970521f11.png)
需要注意的
自动类型转换:低类型到高类型直接转换(隐式类型转换)安全的
强制类型转换:高类型到低类型需要强制(显式类型转换)不安全的
在类型转换中,编译器只关心程序有没有语法问题,不关心值传递是否存在问题
比如:
在高类型到低类型转换中,如果没有强制转换,在编译期会报错,但不会考虑强转后的值是否能正常存放到目标类型的变量中
如果直接赋值,编译器会自动将值进行转换直到符合语法规则,在运行期间可能发生值溢出
如果间接赋值,编译器会根据类型转换规则转换直到符合语法规则,在运行期间溢出的值会从边界从头开始计数