自動型別轉換
自動型別轉換:容量小的資料型別可以自動轉換為容量大的資料型別。
int i=3;
double d=i;
float f=i;
double d2=f;
在圖中,黑色的實線表示無資料丟失的自動型別轉換,而紅色的虛線表示在轉換時可能會精度的損失。
boolean 8bit/1byte
byte 8bit/1byte
char 16bit/2byte
short 16bit/2byte
float 32bit/4byte
int 32bit/4byte
long 64bit/8byte
double 64bit/8byte
特例
可以將整型常量直接賦值給byte,short,char等型別變數,而不需要進行強制型別轉換,只要不超出其表示範圍;
short b=12;//合法
short b=1234567;//非法
強制型別轉換
強制型別轉換又被稱為造型,用於顯示的轉換乙個數值的型別,在有可能丟失資訊的情況下進行的轉換是通過造型來完成的,但可能造成精度降低或溢位。
double x=3.14;
int a1=(int)x;
print輸出:3
當將一種型別強制轉換成另一種型別,而又超出了目標型別的表示範圍,就會被截斷成為乙個完全不同的值,無意義的值。
int x2=-100;
char a2=(char)x2;
print輸出:?
表示式中的型別提公升問題
int a=4;
long b=5;
int c=a+b;//這時a+b的值是long型別
int c=(int)(a+b);
所有的二元運算子(+-*/%)都會有型別提公升的問題!超型別時需要強制轉型。
long型別強轉使用大寫l並且運算時盡量寫在第乙個值的後面例如:long times=70l*60*24*365*70;//會先提公升資料型別
int money=1000000000;//10億
int years=20;
long total=(long)(money*years);//錯誤。因為money*years已經運算完,在提成long輸出的結果和沒有long的數值是一樣的
long total=(long)money*years;//正確。先提公升後計算
Java資料型別轉換
1字串to整型 string num 111 int integer.parseint num 確保num 只有數字字元 1.1byte and string publicclasstestmain publicstaticbytestring2byte string input byte2stri...
java資料型別轉換
資料型別由低階到高階依次為 byte,short,char int long float double 型別轉換由低階到高階可以自動轉換,比如byte b long l b 如果低階為char,轉換為高階時轉化資料是相應的ascii碼。byte,short,char是同一級別的,不能自動相互轉換,如...
Java資料型別轉換
資料樂行的轉換,分為自動轉換和強制型別轉換。自動轉換時程式在執行過程中 悄然 進行的轉換,不需要使用者提前宣告,一般是從位數低的型別向位數高的型別轉換 強制型別轉換則必須在 中宣告,轉換順序不受限制。自動轉換按從低到高的順序轉換。不同型別資料間的優先關係如下 低 高 byte,short,char ...