首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 資料型別轉換完全指南:自動轉型與強制轉型規則詳解

     編輯:Java 綜合教學

Java 資料型別轉換完全指南:自動轉型與強制轉型規則詳解

Java 作為強型別語言,資料型別間的轉換遵循嚴格規則。本文系統整理基本型別的自動轉型(隱式)與強制轉型(顯式)機制,並透過代碼範例演示常見場景與陷阱。

一、自動類型轉換 (隱式轉型 / Widening)

規則:資料範圍小的型別自動提升為範圍大的型別,無精度損失風險(除 int→float、long→float/double 可能損失精度)。

轉型方向圖:

byte → short → int → long → float → double
                ↑
               char

自動轉換示意圖

代碼範例

public class Test {
    public static void main(String[] args) {
        int a = 1;
        double b = 1.5;
        double sum = a + b;        // int 自動提升為 double
        System.out.println(sum);   // 2.5

        String c = "凌";
        char d = '晨';
        char e = '好';
        String concat = c + d + e; // char 自動提升為 String 進行連接
        System.out.println(concat); // 凌晨好
    }
}

二、強制類型轉換 (顯式轉型 / Narrowing)

規則:目標型別範圍小於來源型別時,必須使用 (目標型別) 強制轉換,可能導致精度捨入、溢位或符號改變。

強制轉換示意圖

代碼範例

public class Test {
    public static void main(String[] args) {
        int a = (int) 10.2;     // double → int,截斷小數位
        double b = (double) 10; // int → double,精度無損
        System.out.println(a);  // 10
        System.out.println(b);  // 10.0
    }
}

三、特殊規則與常見陷阱

  1. byte/short/char 運算自動提升為 int:
    byte b1 = 10, b2 = 20;
            // byte b3 = b1 + b2; // 編譯錯誤:結果為 int
            byte b3 = (byte) (b1 + b2); // 需強轉
  2. 字面值賦值的特例:若 int 常量在目標型別範圍內,可直接賦值給 byte/short/char 無需強轉。
    byte b = 100; // 合法
            // byte b = 200; // 編譯錯誤:超出範圍
  3. char 與 String 無法直接強制轉換:
    • char → String:使用 String.valueOf(c) 或 c + ""
    • String → char:僅限單字元字串用 str.charAt(0)
  4. boolean 不參與任何數值轉換。

四、總結表

來源 \ 目標byteshortcharintlongfloatdouble
byte-自動強制自動自動自動自動
short強制-強制自動自動自動自動
char強制強制-自動自動自動自動
int強制強制強制-自動自動自動
long強制強制強制強制-自動自動
float強制強制強制強制強制-自動
double強制強制強制強制強制強制-

註:「自動」= 隱式轉型,「強制」= 需顯式造型,「-」= 同類型。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved