数据类型转换
转换规则:
1.除boolean类型外, 剩余7种类型都可以互相转换
2.不同的数据类型做运算, 先转换为大容量的数据类型再做运算
3.小容量 -> 大容量
byte -> short -> int -> long -> float -> double
char ->
short 和 char都占用两个字节
short 表示的范围是 -32768 ~ 32767
char 表示的范围是 0 ~ 65535
4.大容量 -> 小容量
不可以, 编译会报语法错误
需强制类型转换, 但有可能造成精度损失
特别地: int类型字面值赋值给byte/short/char数据类型,只要不超出数据范围可以编译, 不会报错
byte n1 = 100;
byte n1 = 128; // 编译报错, 不兼容的类型: 从int转换到byte可能会有损失
short n2 = 200;
char c = 65;
// 强制类型转换
byte n1 = (byte)198;
System.out.println(n1);
// 计算方式一
1 1 0 0 0 1 1 0 // 补码
1 1 0 0 0 1 0 1 // - 1
1 0 1 1 1 0 1 0 // 2 + 8 + 16 + 32 = -58
// 计算方式二
1 1 0 0 0 1 1 0 // 补码
1 0 1 1 1 0 0 1 // 反码
1 0 1 1 1 0 1 0 // + 1 // 2 + 8 + 16 + 32 = -58
5.当byte/short/int参与运算时, 先转换为int数据类型
原文:https://www.cnblogs.com/gmbjzg/p/14641495.html