使用型別轉換計算兩個位元組值之和的Java程式


當我們將一種資料型別轉換為另一種資料型別時,我們稱之為型別轉換。Java中有兩種型別的型別轉換:顯式和隱式。當我們將更高資料型別轉換為較低資料型別時,這稱為顯式型別轉換,並且需要手動進行。這樣做存在資料丟失的風險,因為較低資料型別的取值範圍小於較高資料型別,這是手動進行的主要原因。

由於byte是Java中可用的最低資料型別,我們需要將其轉換為更高資料型別。它可以轉換為short、char、int、long、float和double。因此,我們將透過隱式轉換來執行使用型別轉換計算兩個位元組值之和。在這種情況下,位元組資料型別到任何其他更高資料型別的轉換由編譯器自動完成,並且在轉換過程中沒有資料丟失的風險。

透過型別轉換為整數資料型別計算兩個位元組值之和

整數和位元組都是基本資料型別,但它們之間主要區別在於儲存大小的範圍。位元組只能儲存1位元組資料,而整數可以儲存4位元組資料。因此,位元組資料型別可以輕鬆地轉換為整數資料型別。

當我們需要小於1位元組的記憶體大小時,我們使用位元組代替整數。這將節省一些計算機記憶體。

示例

public class Main{
   public static void main(String[] args) {
      byte by1 = 122, by2 = 54;
      int n1 = by1;
      int n2 = by2;
      int intSum = n1 + n2;
      System.out.println("Sum after type casted to integer: " + intSum);
   }
}

輸出

Sum after type casted to integer: 176

在上面的程式碼中,我們演示了使用隱式型別轉換計算兩個位元組值之和。“by1”和“by2”是隱式轉換為整數資料型別的兩個位元組值。“intSum”是儲存它們之和的整型變數。

透過型別轉換為雙精度資料型別計算兩個位元組值之和

雙精度型儲存分數資料,而位元組僅儲存整數,雙精度型可以儲存8位元組資料,大於位元組資料型別。因此,位元組也可以輕鬆地轉換為雙精度型。

示例

public class Main{
   public static void main(String[] args) {
      byte by1 = 122, by2 = 54;
      double d1 = by1;
      double d2 = by2;
      double doubleSum = d1 + d2;
      System.out.println("Sum after type casted to double: " + doubleSum);
   }
}

輸出

Sum after type casted to double: 176.0

在這裡,我們再次將“by1”和“by2”作為兩個位元組值,但這次它們被隱式轉換為雙精度資料型別,“doubleSum”是儲存它們之和的雙精度型變數。在輸出中,小數點表示位元組值已成功轉換為雙精度資料型別。

為什麼在計算兩個位元組值之和時需要型別轉換?

位元組資料型別的範圍僅在-128到127之間。如果總和在此範圍內,則沒問題。但是,如果我們新增兩個位元組值,例如100和29,其和為129,則可能會發生溢位問題,因為129大於位元組的範圍。因此,我們需要將位元組轉換為某些更高資料型別以最大限度地減少資料丟失的風險。

示例

public class Main{
   public static void main(String[] args){
      byte by1 =122, by2=54;
      byte byteSum;
      byteSum= (byte) by1+by2;
      System.out.printlln(byteSum);
   }
}

輸出

Main.java:5: error: incompatible types: possible lossy conversion from int to byte
byteSum= (byte) by1+by2;
                           ^
Main.java:6: error: cannot find symbol
System.out.printlln(byteSum);
                  ^
  symbol:   method printlln(byte)
  location: variable out of type PrintStream
2 errors

執行上述程式碼後,我們收到此錯誤。在這裡,編譯器警告我們存在有損轉換,因為總和的值為129,它超過了位元組資料型別的範圍。我們丟失了一些資料。

結論

在本文中,我們使用隱式型別轉換將兩個位元組值轉換為整數和雙精度資料型別計算了它們的和,並且我們還了解了型別轉換的必要性。在型別轉換期間,變數的值不會改變,只有該變數的資料型別會改變。在型別轉換期間也會考慮資料型別的相容性。

更新於:2023年4月25日

407 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告