1.首先複習一下java的基本數據類型,見下圖java
2.比較他們的字節數面試
備註:1字節(Byte)=8位(Bit)微信
3.轉換中的知識點spa
*java中整數類型默認的int類型;小數類型默認的double;code
*char 能夠當作一中特殊的整數類型;對象
*int沒法轉換爲boolean;blog
*小數類型轉爲整數類型,小數可能被捨棄,全部出現精度損失,因此須要強制轉換;it
*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.四則運算中table
/*
一、若是兩個操做數中有一個是double類型,另外一個就會轉換爲double類型;
二、不然,若是有一個操做數是float,另外一個就會轉化爲float;
三、不然,若是有一個操做數是long,另外一個就會轉換爲long;
四、不然,兩個操做數都將轉換爲int類型。
*/
*面試陷阱
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.最後是從小到大順序圖一張
6.面試:什麼是不可變對象(immutable object)?
解析:不可變對象指對象一旦被建立,狀態就不能再改變。任何修改都會建立一個新的對象,如String、Integer及其它包裝類。
7.隱式類型轉換
當將佔位數少的類型賦值給佔位數多的類型時,java自動使用隱式類型轉換(如int型轉爲long型)
8.顯式類型轉換
當把在級別高的變量的值賦給級別低變量時,必須使用顯式類型轉換運算(如double型轉爲float型)
歡迎關注個人微信公衆號:安卓圈