| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /**
- * @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
- */
- }
- }
|