Java数据类型转换
Java数据类型转换
以前的知识稍微有点遗忘了,打算再重新整理一下吧。对于基本数据类型,不同的数据类型之间可以相互转换,但需要满足一定的规则。
转换规则
精度高的数据类型就像容量大的杯子,可以放更大的数据
精度低的数据类型就像容量小的杯子,只能放更小的数据
小杯子往大杯子里倒东西,大杯子怎么都放得下
大杯子往小杯子里倒东西,有的时候放的下,有的时候就会有溢出
注意点:虽然short和char都是16位的,长度是一样的,但是彼此之间,依然需要进行强制转换。
short类型与char类型的转换如下:
char a = 'C';
short b = 56;
char c = (char) b;
short d = (short) a;
低精度向高精度转换(自动转换)
低精度的数据类型能够自动转换为高精度的数据类型,即低容量能被高容量自动兼容。
如int数据类型能自动转换为long数据类型。
int a = 123;
long b = 256;
b = a;
注意点:整型和整型进行运算的时候,如果两边的值都是小于或者等于int的,那么其结果就是int。
如 short 类型 与 byte 类型相加时,最终的数据类型为 int
short a = 2;
byte b = 12;
int c = a + b;
高精度向低精度转换(强转)
高精度的数据类型也可以向低精度的数据类型进行强制转换,但数据大小需要满足低精度数据类型的取值范围,否则会有数据丢失的风险。
如 int 类型 能够 强转为 byte 数据类型
int a1 = 123;
int a2 = 490;
byte b;
b = (byte) a1;
//转换正常
System.out.println("b1:" + b);
b = (byte) a2;
//截取8位长度的二进制数,即11101010为 -22
System.out.println("b2:" + b);
System.out.println("a1的二进制:" + Integer.toBinaryString(a1));
System.out.println("a2的二进制:" + Integer.toBinaryString(a2));
输出结果如下:
b1:123
b2:-22
a1的二进制:1111011
a2的二进制:111101010
博客参考文章:https://how2j.cn/k/variable/variable-transfer/264.html#nowhere
自我控制是最强者的本能-萧伯纳