1.Java 8種基本資料類型及其占空間大小
類型 | 空間大小 |
---|---|
boolean | 8bit/1byte |
byte | 8bit/1byte |
char | 16bit /2byte |
short | 16bit /2byte |
float | 32bite/4byte |
int | 32bite/4byte |
long | 64bite/8byte |
double | 64bite/8byte |
2.基本類型自動轉換
自動類型轉換:數字表示範圍小的資料類型可以自動轉換為範圍大的資料類型
實線轉換時不會造成資料丢失,虛線轉換可能會出現資料丢失。
例:
byte b = 20;
int n = b;//byte類型可以自動提示到int
類型提升: 是指在多種不同資料類型的表達式中,類型會自動向範圍表示大的數值的資料類型提升。
類型提升規則:
- 如果兩個操作數其中有一個是double類型,另一個操作就會轉換為double類型。
- 否則,如果其中一個操作數是float類型,另一個将會轉換為float類型。
- 否則,如果其中一個操作數是long類型,另一個會轉換為long類型。
- 否則,兩個操作數都轉換為int類型。(隐含意:如果在二進制操作中,不存在double,float,long的話,那麼byte、short、char類型都會被轉化為int類型)
- final修飾的short, char變量相加後不會被自動提升。
例:
byte b1 = 12;
byte b2 = 15;
byte b3 = b1 +b2;//編譯不通過,b1+b2會自動提升到int類型,再從int轉byte類型會報錯。
double d = 1.20;
float f = n + d;//編譯不能通過,int+double,int自動提升到double類型,double類型轉float報錯
final byte b1 = 23;
final byte b2 = 14;
byte byte b3 = b1 + b2;//編譯通過,final修飾的變量不再自動提升,byte+byte結果還是byte
3.Java強制類型轉換
強制類型轉換,可能丢失精度。
格式:目标類型 變量=(目标類型)源類型變量
參考:
https://www.cnblogs.com/skipping/p/5449019.html
https://blog.csdn.net/zhaominpro/article/details/79602329
https://www.cnblogs.com/ljdblog/p/6253799.html
https://blog.csdn.net/youanyyou/article/details/80512252#commentsedit