天天看點

1.Java 基本資料類型自動提升、強制轉換

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.基本類型自動轉換

自動類型轉換:數字表示範圍小的資料類型可以自動轉換為範圍大的資料類型

1.Java 基本資料類型自動提升、強制轉換

實線轉換時不會造成資料丢失,虛線轉換可能會出現資料丢失。

例:

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