Просмотр исходного кода

feat: 新增 Demo05.java 基本数据类型转换

- 自动转换(小→大):byte→short→int→long→float→double
- 强制转换(大→小):(目标类型) 变量,可能丢失精度
- 演示 double→int 小数截断 和 int→byte 数据溢出
- 详解 128 转换为 -128 的二进制过程
WanJL 1 день назад
Родитель
Сommit
18983081c4

+ 53 - 0
授课代码/javaSE-260713-FirstJava/src/Demo05.java

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

+ 12 - 0
授课代码/javaSE-260713-FirstJava/src/Demo06.java

@@ -0,0 +1,12 @@
+package PACKAGE_NAME;
+
+
+/**
+ * @title Demo06
+ * @description 
+ * @author WanJl
+ * @version 1.0
+ * @create 2026/7/13
+ */
+public class Demo06 {
+}