22.基础语法-类型转换
22 类型转换
22.1 常规类型转换
数值范围小的类型的变量,可以直接赋值给数值范围大的类型的变量,实现自动类型转换,反之则不行
从小到大:byte -> short -> int -> long -> float -> double
正常类型转换
byte x = 10; int y = x; System.out.println(y); // 10

1.申请 byte 类型,byte 是 1 个字节,因此申请的空间是 00000000,空间叫 x,然后将 10 存入 00001010
2.申请 int 类型,int 是 4 个字节,因此申请的空间是 00000000|00000000|00000000|00000000,空间叫 y
3.将 x 赋值给 y,x 是 1个字节,y 是 4个字节,因此 x 需要先从 y 的低位开始填充,存入 00000000|00000000|00000000|00001010
22.2 强制类型转换
强制类型转换:将一种数据类型强制转为另一种数据类型。
int x = 10; byte y = (byte) x; System.out.println(y);

1.申请 int 类型,int 是 4 个字节,因此申请的空间是 00000000|00000000|00000000|00000000,空间叫 x,然后将 10 存入 00000000|00000000|00000000|00001010
2.申请 byte 类型,byte 是 1 个字节,因此申请的空间是 00000000,空间叫 y
3.将 x 的 int 强制转换为 byte,即由 4 个字节转为了 1 个字节,会舍弃前面三个字节的内容,而只将 int 第四字节内容填充到 byte 中,存入 00001010
注意:强制转换要注意是否在转换范围内,否则将因字节空间的丢失,而导致数据不一致
22.3 演示
鼠标放到 chap05 行,新建 New -> Java Class -> 输入 TypeCastDemo(创建类)
package com.itheima.chap05; public class TypeCastDemo { public static void main(String[] args) { // 1.自动类型转换, 小转大 byte x = 127; int y = x; System.out.println(y); // 2.强制类型转换(在转换范围内) int a = 100; // byte b = a; // 正常转换报错误, 不可转换, 不可大转小 byte b = (byte) a; // 强制类型转换 System.out.println(b); // 在转换范围内, 强制转换后, 数据一致 // 3.强制类型转换(不在转换范围内) int c = 1030; // 二进制 四字节 0000 0100 0000 0110 byte d = (byte) c; // 转为两字节 0000 0110 System.out.println(d); // 6 } } ------------------------------------------------ 执行后 D:\Software\jdk17\bin\java.exe "-javaagent:D:\Software\JetBrainsIntelliJ IDEA 2025.2.4\lib\idea_rt.jar=2849" -Dfile.encoding=UTF-8 -classpath D:\Software\JavaCode\p1-basic\out\production\p1-basic com.itheima.chap05.TypeCastDemo 127 100 6 Process finished with exit code 0
———————————————————————————————————————————————————————————————————————————
无敌小马爱学习
浙公网安备 33010602011771号