一、基本數據類型
int是最常用的數據類型,因此通常情況下,直接給出一個整數值默認就是int類型。
小數默認double類型
除此之外,如下兩種情況必須指出。
★如果直接講一個較小的整數值(在byte或short範圍內)賦給一個byte或short變量,系統會把這個整數值當成該類型來處理。
★如果使用一個巨大整數值(超出了int範圍)時,java不會自動把這個整數值當成long類型來處理,應該在後面添加I或者L後綴,通常推薦使用L,I易與1混淆。
驗證以上結論:
二、自動類型轉換
在Java中不同類型的數據是不能進行計算的。
java中的運算特性:自動類型提升(以大的爲主,數據類型自動提升到與表達式中最高的等級操作數同樣的類型最高位double)
自動類型轉換圖
例如:
輸出:7, b由byte轉爲int;
如果出現 b = b + 1; 就會出現無法編譯, b+1爲int型,b爲byte型,類型不一致,編譯錯誤;
結論:賦值運算時常量可以進行自動類型轉化,變量不可以
例如:在(byte+btye、short+short、short+byte中)
這三種情況都不能正常編譯,一般來講,byte = btye + byte......所以這是爲什麼呢?
這是由於jvm內部指令造成的。
如圖片所示,加運算(Tadd)只有int,long,float,double四個數字類型支持,所以比int小的加運算自動轉化成int的加運算,結果也是int
因爲b1和b2都是byte類型,在進行計算的時候a和b都被自動提升爲int類型,而等式左邊的b3仍然是byte類型的,所以編譯就會出錯,這種情況只能進行強轉。
總結:在進行加運算的時候比int小的數據類型之間的運算都會自動轉化成int的加運算,所以賦值的時候就得注意兩邊的數據類型是否一致。