01 隐式转换(自动转换)
小的数据类型和大的数据类型计算的时候,小的数据类型提升为大的数据类
低级数据类型自动转换为高级数据类型
大小顺序为 byte ,short ,char<int < long < float< double
byte/short/char 相互运算时时 都会提成为int类型 包括自身和自身运算
02 强制转换
int x = 3;
byte b = 4
b = x + b;
x和b的和7是一个int数据类型的, 要赋值给byte类型的b,会损失精度
需要进行强制类型转换 b = (byte)(x+b);
数据类型强转会损失精度,具体原理需要再学习二进制数据类型的范围,补码,原码,反码等知识
可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,前提是不超出其表述范围,否则必须进行强制转换
int转byte int是32位而byte是8位的,所以,int类型的高24位将会被丢弃
02 变量相加 和 常量相加
(1) 变量相加
byte b1 = 3;
byte b2 = 4;
byte b3 = b2 + b1;
会报错
b1和b2是两个变量,变量存储的值是变化的,在编译的时候无法判断里面的具体值,会提升为int int再赋值为byte 会报错 所以会报错
(2) 常量相加
byte b = 3 + 4; 输出为7.
java编译器有常量优化机制
会判断两个常量的和在byte的范围之间,就会正常赋值给byte类型
--------------------------------------------------------------------------------
01 隐式转换(自动转换)
小的数据类型和大的数据类型计算的时候,小的数据类型提升为大的数据类
低级数据类型自动转换为高级数据类型
大小顺序为 byte ,short ,char<int < long < float< double
byte/short/char 相互运算时时 都会提成为int类型 包括自身和自身运算
02 强制转换
int x = 3;
byte b = 4
b = x + b;
x和b的和7是一个int数据类型的, 要赋值给byte类型的b,会损失精度
需要进行强制类型转换 b = (byte)(x+b);
数据类型强转会损失精度,具体原理需要再学习二进制数据类型的范围,补码,原码,反码等知识
可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,前提是不超出其表述范围,否则必须进行强制转换
int转byte int是32位而byte是8位的,所以,int类型的高24位将会被丢弃
02 变量相加 和 常量相加
(1) 变量相加
byte b1 = 3;
byte b2 = 4;
byte b3 = b2 + b1;
会报错
b1和b2是两个变量,变量存储的值是变化的,在编译的时候无法判断里面的具体值,会提升为int int再赋值为byte 会报错 所以会报错
(2) 常量相加
byte b = 3 + 4; 输出为7.
java编译器有常量优化机制
会判断两个常量的和在byte的范围之间,就会正常赋值给byte类型