C語言中文網 目錄

Java數據類型轉換:Java數據類型強制(顯式)轉換和隱式轉換

數據類型的轉換是在所賦值的數值類型和被變量接收的數據類型不一致時發生的,它需要從一種數據類型轉換成另一種數據類型。數據類型的轉換可以分為隱式轉換(自動類型轉換)和顯式轉換(強制類型轉換)兩種。

隱式轉換

自動類型轉換的實現需要同時滿足兩個條件:①兩種數據類型彼此兼容,②目標類型的取值范圍大于源數據類型(低級類型數據轉換成高級類型數據)。例如 byte 類型向 short 類型轉換時,由于 short 類型的取值范圍較大,會自動將 byte 轉換為 short 類型。

在運算過程中,由于不同的數據類型會轉換成同一種數據類型,所以整型、浮點型以及字符型都可以參與混合運算。自動轉換的規則是從低級類型數據轉換成高級類型數據。轉換規則如下:
  • 數值型數據的轉換:byte→short→int→long→float→double。
  • 字符型轉換為整型:char→int。

以上數據類型的轉換遵循從左到右的轉換順序,最終轉換成表達式中表示范圍最大的變量的數據類型。

例 1

顧客到超市購物,購買牙膏 2 盒,面巾紙 4 盒。其中牙膏的價格是 10.9 元,面巾紙的價格是 5.8 元,求商品總價格。實現代碼如下:
public static void main(String[] args)
{
    float price1=10.9f;    //定義牙膏的價格
    double price2=5.8;    //定義面巾紙的價格
    int num1=2;    //定義牙膏的數量
    int num2=4;    //定義面巾紙的數量
    double res=price1*num1+price2*num2;    //計算總價
    System.out.println("—共付給收銀員"+res+"元");    //輸出總價
}

上述代碼中首先定義了一個 float 類型的變量存儲牙膏的價格,然后定義了一個 double 類型的變量存儲面巾紙的價格,再定義兩個 int 類型的變量存儲物品的數量,最后進行了乘運算以及和運算之后,將結果儲存在一個 double 類型的變量中進行輸出。

程序執行結果如下所示:
—共付給收銀員44.99999923706055元

從執行結果看出,float、int 和 double 三種數據類型參與運算,最后輸出的結果為 double 類型的數據。

顯式轉換

當兩種數據類型不兼容,或目標類型的取值范圍小于源類型時,自動轉換將無法進行,這時就需要進行強制類型轉換。其語法格式如下:
(type)variableName

其中,type 為 variableName 要轉換成的數據類型,而 variableName 是指要進行類型轉換的變量名稱,強制轉換的實例如下:
int a=3;
double b=5.0;
a=(int)b;

上述代碼中首先將 double 類型變量 b 的值強制轉換成 int 類型,然后將值賦給 a,但是變量 b 本身的值是沒有發生變化的。

在強制類型轉換中,如果是將浮點類型的值轉換為整數,直接去掉小數點后邊的所有數字;而如果是整數類型強制轉換為浮點類型時,將在小數點后面補零。

例 2

顧客到超市購物,購買牙膏 2 盒,面巾紙 4 盒。其中牙膏的價格是 10.9 元,面巾紙的價格是 5.8 元,求商品總價格,在計算總價時采用 int 類型的數據進行存儲。實現代碼如下:
public static void main(String[] args)
{
    float price1=10.9f;
    double price2=5.8;
    int num1=2;
    int num2=4;
    int res2=(int)(price1*num1+price2*num2);
    System.out.println("—共付給收銀員"+res2+"元");
}

在上述實例中,有 double 類型、float 類型和 int 類型的數據參與運算,其運算結果默認為 double 類型,題目要求的結果為 int 類型,因為 int 類型的取值范圍要小于 double 類型的取值范圍,所以需要進行強制類型轉換。

程序執行結果如下所示:
一共付給收銀員44元

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo