/** * @author WanJl * @version 1.0 * @title Demo05 * @description 基本数据类型的转换 * @create 2026/7/13 */ public class Demo05 { public static void main(String[] args) { /* 自动转换 可以把表示范围小的类型的变量直接转换为表示范围大类型的变量,可以自动转换 byte -> short -> int -> long -> float ->double */ byte a=120; short b=a; //byte -> short int c=b; //short -> int long d=c; //int -> long float f=d; //long -> float double dd=f; //float ->double // 以上都可以自动转换,比如有一瓶 500ml 的水,倒进 1L的瓶子里,是完全可以装得下。 /* 强制转换 表示范围大的类型的值,转换给表示范围小的类型的变量,就需要强制转换。 因为 转换的时候,可能会出现两种情况: |-1、能装得下:1L瓶 里面有300ml水,倒进 500ml的瓶子里。 |-2、装不下:1L瓶 里面有600ml水,倒进 500ml的瓶子里。就会丢失数据 所以,强制类型转换的时候,有可能会丢失精度。 强制转换运算符 目标类型 变量名2=(目标类型)变量1; */ double pi=3.94; int n=(int)pi; // double -> int 小数转整数,直接截断小数 System.out.println(n); // n是3,会丢失精度,直接截断小数,不是四舍五入 int n2=128; byte b2=(byte)n2; // int -> byte byte类型的最大值 127 System.out.println(b2); /* 转换过程: 1、int 的 128(十进制) 转换为 32位二进制的128--> 0000 0000 0000 0000 0000 0000 1000 0000 2、转换成byte类型(8位)的二进制数,直接砍掉高位,从左边砍掉24位 1000 0000 注意:二进制数中,最左边的是最高位,也叫符号位,符号位为0,那么这个二进制数就是正数,如果是1,就是负数 3、把 8位二进制数 1000 0000 转换为十进制数 就是 -128 */ } }