|
|
@@ -0,0 +1,53 @@
|
|
|
+/**
|
|
|
+ * @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
|
|
|
+ */
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|