10_基本数据类型之间的转换
基本数据类型之间的转换
-
在Java中,基本数据类型之间是可以相互转换的
-
Java语言中基本数据类型之间的转换方式:自动类型转换和强制类型转换。
-
其中自动类型转换主要指从小类型到大类型之间的转换。大类型的内存空间远远大于小类型的内存空间。
/* 编程实现基本数据类型之间转换的使用 */ public class TransformTest { public static void main(String[] args) { // 1、声明两个变量并初始化 byte b1 = 10; short s1 = 20; // 2、打印变量的数值 System.out.println("b1 = " + b1); // b1 = 10 System.out.println("s1 = " + s1); // s1 = 20 System.out.println("-------------------"); // 3、实现自动类型转换的使用 // 表示将变量b1的数值赋值给变量s1,并覆盖变量s1中原理的数值,相当于从byte类型到short类型的转换,小到大,自动转换 ------> 自动完成,不需要我们做额外的事情 s1 = b1; System.out.println("b1 = " + b1); // b1 = 10 System.out.println("s1 = " + s1); // s1 = 10 } }
-
其中强制类型转换主要指从大类型到小类型之间的转换,语法格式:目标类型 变量名 = (目标类型)源类型变量名;
// 4、实现强制类型转换的使用 // 表示将变量s1的数值赋值给变量b1,并覆盖变量b1中原来的数值,相当于从short类型到byte类型的转换,大到小,强制转换 // s1 = 20; s1 = 128; // 故意加该行代码 /* 为什么会是-128? 这也就是强转造成的损失 128(short 2个字节 16位2进制位): 0000 0000 1000 0000 => 强制赋给byte类型的变量(1个字节 8位2进制位 默认取低8位的数值) 1000 0000(负的二进制)=> 0111 1111(先减1) => (按位取反)1000 0000 => 合并为十进制整数 => 128 => 添上负号 -128 */ // b1 = s1; // 错误: 不兼容的类型: 从short转换到byte可能会有损失 报错的原因:short 是2个字节,byte 是1个字节 b1 = (byte) s1; System.out.println("b1 = " + b1); // b1 = 20 -128 System.out.println("s1 = " + s1); // s1 = 20 128
-
强转有风险,操作需谨慎!在代码中能不做强制类型转换就不做强制类型转换,因为强转是有风险的,是有可能会造成数据的损失的。