<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                >[success] # java 類型轉換 Java語言中基本數據類型之間的轉換方式:`自動類型轉換`和`強制類型轉換` * `自動類型轉換:`主要指從小類型到大類型之間的轉換,就是把一個取值范圍小的數據或者變量,賦值給另一個取值范圍大的變量。此時不需要我們額外寫代碼單獨實現,是程序自動幫我們完成的 1. 取值范圍小的,和取值范圍大的進行運算,小的會先提升為大的,再進行運算(取值范圍`byte short int long float double`) ![](https://img.kancloud.cn/93/a8/93a842cad7e0f630b41712d0451726a1_1097x201.png) 2. `byte、short、char`三種類型的數據在運算的時候,都會直接先提升為int,然后再進行運算 * `強制類型轉換:`主要指從大類型到小類型之間的轉換把一個取值范圍大的數據或者變量賦值給另一個取值范圍小的變量,語法格式如下:`目標類型 變量名 = (目標類型)源類型變量名`,不建議進行類型強制轉換 >[danger] ##### 自動類型轉換 ~~~ public class TypeConversion { public static void main(String[] args) { byte b1 = 1; // 一個字節 short s1 = 127; // 兩個字節 s1 = b1; // 兩個字節接受一個字節 // b1 = s1; //一個字節到兩個字節報錯 錯誤: 不兼容的類型: 從short轉換到byte可能會有損失 System.out.println(b1 + "," + s1); double a = 10; System.out.println(a); // 10.0 小類型像大類型轉換 byte b = 100; int c = b; // 可以賦值成功 因byte 小類型轉換大類型int隱式轉換,不需要我們額外寫代碼單獨實現,是可以直接賦值 System.out.println(c); // 100 int d = 1; long e = 100L; long f = d + e; System.out.println(f); // long 類型大于int 因此int轉換為long,最終的結果其實就是兩個long相加,那么最終的result是long類型的。 int g = 10; long h = 100L; double i = 20.2; double j = g + h + i; // double 類型最大最后都會轉換為double byte k = 10; byte k2 = 20; int k3 = k + k2; // byte,short,char類型的變量在參與運算的時候,變量里面的值會直接先提升為int } } ~~~ >[danger] ##### 強制類型轉換 ```java public class OperatorDemo2 { public static void main(String[] args) { double a = 12.3; int b = (int) a; System.out.println(b);//12 } } ``` * **注意點:強制轉換有可能會導致數據發生錯誤。(數據的精度丟失)**,以下面案例為例結果為 `-6,250`,過程 將`short` 強制轉換為 byte 類型 變成了`-6`,轉換過程首先1個字節等于8位二進制,250轉換位short 類型的二進制位`1111 1010`因為short 是兩個字節補位`0000 0000 1111 1010` 轉換位byte 類型為一個字節從最低位開始算8位二進制`1111 1010`,要記住數字類型首位表示正負,此時`1` 為負數,轉換十進制需要`1111 1010` 減1等到`1111 1001 ` 在取反`0000 0110` 在轉換十進制等于`6` 在添加符號因此`250` 轉換byte 為`-6` ~~~ public class VarTest{ public static void main(String[] args){ byte b1 = 1; // 一個字節 short s1 = 250; // 兩個字節 b1 = (byte)s1; System.out.println(b1+","+s1); // -6,250 } } ~~~ >[danger] ##### 編譯器優化 * 當 `byte + int` 相加結果還是`int`類型, ` byte + byte \` 相加結果還是`int`類型 ,原因是因為`byte` 類型最大為`127` 往往相加之后很容易超過,因此自動升級為`int` 減法也是一樣的,此時`a-b` 已經是int 類型 ~~~ public class VarTest{ public static void main(String[] args){ char a = 1; char b = 2; b = b-a; // 錯誤: 不兼容的類型: 從int轉換到char可能會有損失 } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看