天天看點

java基本資料類型和資料類型轉換

1.首先複習一下java的基本資料類型,見下圖

java基本資料類型和資料類型轉換

2.比較他們的位元組數

備注:1位元組(Byte)=8位(Bit)

java基本資料類型和資料類型轉換

3.轉換中的知識點

*java中整數類型預設的int類型;小數類型預設的double;

*char 可以當做一中特殊的整數類型;

*int無法轉換為boolean;

*小數類型轉為整數類型,小數可能被舍棄,所有出現精度損失,是以需要強制轉換;

*boolean 類型不能轉換成任何其它資料類型;

byte b2 = 120;
//沒報錯的原因:
//編譯時候,進行檢查,看指派大小是否超過變量的類型所容納的範圍
//如果超過,報錯:從int轉換到byte可能會有損失,如果沒超過,編譯通過      
float f3 = 100L; 這種情況,整數部分,可以直接指派給float整數部分      
float f1 = 100.9; 這種情況,因為預設的是double,如果這樣轉換,有可能失去小數點,必須強制轉換      
long l3 = 1000.9f; 小數轉為整數,小數可能丢失,需要強制轉換      
double d2 = 10.9d;
int i2 = d2; //錯誤: 不相容的類型: 從double轉換到int可能會有損失
      
char c1 = 'a';
int i3 = c1; //自動轉換

int i4 = 100;
//char c2 = i4;// 錯誤: 不相容的類型: 從int轉換到char可能會有損失      

4.四則運算中

*面試陷阱

byte b1 = 10;
byte b2 = 11;
//錯誤: 不相容的類型: 從int轉換到byte可能會有損失
//否則,兩個操作數都将轉換為int類型。
byte b3 = b1 + b2 //錯誤
byte b3 = (byte)(b1 + b2); //正确      

*面試陷阱2:

short s1 = 1; 
s1 = s1 + 1; //錯誤: 不相容的類型: 從int轉換到short可能會有損失

short s2 = 1; 
s2 += 1; // 等同于short s2 = (short)(s2 + (short)1); //正确      

5.最後是從小到大順序圖一張

java基本資料類型和資料類型轉換

 6.面試:什麼是不可變對象(immutable object)?

解析:不可變對象指對象一旦被建立,狀态就不能再改變。任何修改都會建立一個新的對象,如String、Integer及其它包裝類。

 7.隐式類型轉換

當将占位數少的類型指派給占位數多的類型時,java自動使用隐式類型轉換(如int型轉為long型)

8.顯式類型轉換

當把在級别高的變量的值賦給級别低變量時,必須使用顯式類型轉換運算(如double型轉為float型)