Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤與異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 與框架

Java 類參考

Java 有用資源

Java 型別轉換



Java 型別轉換

型別轉換是在 Java 中由編譯器或程式設計師用來將一種資料型別轉換為另一種資料型別的技術。型別轉換也稱為型別轉換。例如,將 int 轉換為 double,double 轉換為 int,short 轉換為 int 等。

Java 程式設計中允許兩種型別的型別轉換

  • 擴充套件型別轉換
  • 縮窄型別轉換

擴充套件型別轉換

擴充套件型別轉換也稱為隱式型別轉換,其中較小的型別轉換為較大的型別,由編譯器自動完成。

層次結構

以下是 Java 中擴充套件型別轉換的層次結構

byte > short > char > int > long > float > double

編譯器在型別轉換中起作用,而不是程式設計師。它在編譯時更改變數的型別。此外,型別轉換僅發生從小資料型別到大資料型別。

示例

在此示例中,我們添加了一個整數和一個雙精度數,將結果儲存在雙精度變數中以顯示總和,在加法過程中隱式地將整數轉換為雙精度數

package com.tutorialspoint;

public class Tester {
   // Main driver method
   public static void main(String[] args) {
      // Define int variables
      int num1 = 5004;
      double num2 = 2.5;
      double sum = num1 + num2;
      // show output
      System.out.println("The sum of " + num1 + " and " + num2 + " is " + sum);
   }
}

編譯並執行 Tester。這將產生以下結果 -

輸出

The sum of 5004 and 2.5 is 5006.5

型別轉換錯誤

當您嘗試將較大資料型別的值分配給較小資料型別的變數而沒有顯式轉換時,就會發生型別轉換錯誤。

Java 編譯器在相容型別之間分配值時執行隱式型別轉換,但它不允許在沒有顯式型別轉換的情況下將較大資料型別轉換為較小資料型別。

示例

在下面的示例中,我們演示了當編譯器嘗試將大資料型別轉換為小資料型別時,我們可能會遇到錯誤。在這裡,我們建立了 num1 整數和 num2 雙精度變數。num1 和 num2 的總和將為雙精度數,當我們嘗試將其儲存到 int 型別的總和時,編譯器會給出錯誤。

package com.tutorialspoint;

public class Tester {
   // Main driver method
   public static void main(String[] args) {
      // Define int variables
      int num1 = 5004;
      double num2 = 2.5;
      int sum = num1 + num2;
      // show output
      System.out.println("The sum of " + num1 + " and " + num2 + " is " + sum);
   }
}

編譯並執行 Tester。這將產生以下結果 -

輸出

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Type mismatch: cannot convert from double to int

	at com.tutorialspoint.Tester.main(Tester.java:9)

縮窄型別轉換

縮窄型別轉換也稱為顯式型別轉換顯式型別轉換,由程式設計師手動完成。在縮窄型別轉換中,可以將較大型別轉換為較小型別。

當程式設計師在編寫程式碼時更改變數型別時。我們可以使用強制轉換運算子來更改變數的型別。例如,double 到 int 或 int 到 double。

語法

以下是縮窄型別轉換的語法,即手動型別轉換

double doubleNum = (double) num;

以上程式碼語句將變數轉換為 double 型別。

示例

在下面的示例中,我們定義了整數型別的 num 變數並將其初始化為該值。此外,我們定義了 double 型別的 doubleNum 變數,並在將其轉換為 double 後儲存 num 變數的值。

接下來,我們建立了 'convertedInt' 整數型別變數,並在型別轉換為 int 後儲存了 double 值。在輸出中,我們可以觀察到 double 和 int 變數的值。

package com.tutorialspoint;

public class Tester {
   // Main driver method
   public static void main(String[] args) {
      // Define int variable
      int num = 5004;
      // Type casting int to double
      double doubleNum = (double) num;
      // show output
      System.out.println("The value of " + num + " after converting to the double is " + doubleNum);
      // Type casting double to int
      int convertedInt = (int) doubleNum;
      // show output
      System.out.println("The value of " + doubleNum + " after converting to the int again is " + convertedInt);
   }
}

編譯並執行 Tester。這將產生以下結果 -

輸出

The value of 5004 after converting to the double is 5004.0
The value of 5004.0 after converting to the int again is 5004
廣告