先看下面一段**:
byte a = (byte)0x80000001;
int b = (int)0x80000001;
system.out.println(a);
system.out.println(b);
a = (byte)b;
system.out.println(a);
輸出結果為什麼呢?
結果是:
1-2147483647
1分析原因:從較大的型別從較小的型別做強制轉換的時候,直接擷取較小型別所需的位元組長度,而不考慮較大型別的符號型別
則a為00000001,b為10000000 00000000 00000000 00000001
a為正,b為負
而a = (byte)b; 與 a = (byte)b;實際是一樣的
從較小型別向較大型別提公升的時候就簡單了,值是一樣的,正數往前面填0,負數往前面填1
整型之間的轉換
這裡說一下c的強型別轉換,也是c 的static cast。在小端的機器實驗了一下,從位數多的型別 例如int64 轉到位數少的型別 例如int32 是直接擷取的,這種情形是十分簡單明瞭的。不過不同環境底層的策略可能不大一樣。而反過來,從位數少的到位數多的,就稍微複雜一點,在我的實驗環境中,例如從a...
Java中的實型與整型的相互轉換
因為實型比整型要多出小數部分,從整型轉為實型時不會有精度丟失,但是由實型轉為整型時則會丟失小數部分的資料。顯式轉換,也就是強制型別轉換,例如下面的 int i 123 double d double i int k int d 在以上 中,首先將int 型的變數轉換為 double 型,在賦值給變數...
java 中整型與字元型的相互轉換
字元型轉換成整型 1.轉換成int型 int integer num integer.parseint string str 2.轉換成long型 long long num long.parselong string str 3.轉換成short型 short short num short.pa...