1. 程式人生 > >java中的資料型別轉換

java中的資料型別轉換

一,強制型別轉換
        1特點;不能自動完成,程式碼需要特殊格式處理
        2格式:範圍小的型別 範圍小的變數名 =(範圍小的型別) 原本範圍大的型別;

1,不建議使用強制型別轉換,可能會造成資料損失

例如:左邊int型別右邊long型別
    

int num=100L;//編譯會報錯(資料型別不相容,從long到int會發生資料損失)


 

   //long強制轉化成int
    int num1=(int)100L;
    System.out.println(num);//輸出100

注意long強制轉化成int時不能超過int的範圍,否則會出現資料損失,例如:

 //long強制轉化成int
    int num1=(int)60000000000000L;
    System.out.println(num);//輸出會小於上面的數

double向int型別轉換,可能損失精度


int num=(int)8.9;//num結果是8

2,byte/short/char可以進行數學運算

例如加法運算

char a='A';
System.out.println(a+1);//結果輸出66

計算機底層會用一個數字(二進位制)65來代表字元A,一旦字元進行算術運算(如果有字串就不會轉化成數字,會直接進行字串拼接),就自動轉換成數字65

3,byte/short/char可以進行數學運算時會先被提升為int型別,然後在進行計算

byte num1=30;//注意byte的範圍
byte num2=50;
byte num3=num1+num2;
System.out.println(num3);//會報錯

理論上num1+num2=80在byte的範圍內。但實際上是資料型別變成了int+int型別,因此num3需要用int型別來接收

int num3=num1+num2;

short型別和byte的運算

short num1=30;
byte num2=10;
short num=(short)(num1+num2);

num1+num2也先被提升為int型別+int型別,所以需要強制型別轉換成short型別。

注意:強制型別轉換時,邏輯上的數字不能超過short的範圍

4,boolean型別不能進行強制型別轉換