1. 程式人生 > >java中的強制型別轉換

java中的強制型別轉換

資料型別的轉換,分為自動轉換和強制轉換。自動轉換是程式在執行過程中 “ 悄然 ” 進行的轉換,不需要使用者提前宣告,一般是從位數低的型別向位數高的型別轉換;強制型別轉換則必須在程式碼中宣告,轉換順序不受限制。

自動資料型別轉換

自動轉換按從低到高的順序轉換。不同型別資料間的優先關係如下: 
    低 ---------------------------------------------> 高 
    byte,short,char-> int -> long -> float -> double

運算中,不同型別的資料先轉化為同一型別,然後進行運算,轉換規則如下:

運算元 1 型別

運算元 2 型別

轉換後的型別

byte 、 short 、 char

int

int

byte 、 short 、 char 、 int

long

long

byte 、 short 、 char 、 int 、 long

float

float

byte 、 short 、 char 、 int 、 long 、 float

double

double

強制資料型別轉換

強制轉換的格式是在需要轉型的資料前加上 “( )” ,然後在括號內加入需要轉化的資料型別。有的資料經過轉型運算後,精度會丟失,而有的會更加精確

C:long → float  無須強制轉換(這個最選項容易出錯),正確。 float佔4個位元組為什麼比long佔8個位元組大呢,因為底層的實現方式不同。  浮點數的32位並不是簡單直接表示大小,而是按照一定標準分配的。  第1位,符號位,即S  接下來8位,指數域,即E。  剩下23位,小數域,即M,取值範圍為[1 ,2 ) 或[0 , 1)  然後按照公式: V=(-1)^s * M * 2^E 也就是說浮點數在記憶體中的32位不是簡單地轉換為十進位制,而是通過公式來計算而來,通過這個公式雖然,只有4個位元組,但浮點數最大值要比長整型的範圍要大