java中的型別轉換

2021-06-08 17:06:42 字數 1113 閱讀 3403

可能我們只是留意了乙個int代表的是整數,占用了4個位元組,而float可以代表小數,而double呢,好吧,能代表更精確的小數,那到底有多精確呢(「如果,你感覺你的程式對精確度要求很高,那麼你可以使用double」,我們往往也都是那麼一說)

primitive型別之間的轉換?

好的,乙個int占用4個位元組,而乙個byte占用了1個位元組

當int轉到byte,低位的8傳給byte

而byte轉到int呢,因為byte佔1個,而int佔4個,那麼直接將數值賦過去就行了,然後,高位補0

請注意上面的一句話,沒錯,那是錯誤的,它也是所有夢魘的開端

如果你還認為是的對,那麼你可以看看下面的實驗

實驗1:    

byte a = (byte) 0xf0;

int b = a;

system.out.println(integer.tobinarystring(b));

你將會看到:11111111111111111111111111110000,一共32個數字

實驗2:

byte a = (byte) 0x0f;

int b = a;

system.out.println(integer.tobinarystring(b));

system.out.println(integer.tobinarystring(b).length());

你將會看到:1111,一共4個數字(為什麼不是32,因為:前面都是0,不給你展示了)

那麼,我們得出了乙個結論:

byte到int轉換時,

如果byte的最左邊的數字是0,那麼轉換後的int的左端全是0,

否則,全是1

上述結論也適應於其他 小型別 轉換到 大型別

我們在大學的時候就學過了,其中還學到什麼補碼等東東

你容易忽視的乙個例子:

我有兩個byte,分別是a和b,我想將它們相加,然後賦予給另外乙個byte c

你可能會寫:byte c = a + b;

然後eclipse告訴你:type mismatch: cannot convert from int to byte

則:兩個byte數相加後變成了乙個int?是:a和b分別轉成int,然後是兩個int相加

java中的型別轉換

基本型別和抽象型別的型別轉換是不同的,基本型別的轉換會改變記憶體中的資料 抽象型別並不對物件本身做更改,而是改變可見性。這是由系統自動完成的型別轉換,由jvm自動完成。轉換規則是對型別進行提公升,也可以說是從儲存範圍小的型別轉換到到儲存範圍大的型別 byte short char int long ...

java中的型別轉換

基本資料型別分為boolean和數值型別,如下圖依次需要注意的是 boolean型別的預設值是false,char除了可以定義數字,乙個以用來定義乙個字元,如 char a 王 乙個位元組表示八位,byte,short,int,long 都是有數值符號,其中float 定義時 需要注意 float ...

JAVA中int String的型別轉換

int string int i 12345 string s 第一種方法 s i 第二種方法 s string.valueof i 這兩種方法有什麼區別呢?作用是不是一樣的呢?是不是在任何下都能互換呢?string int s 12345 int i 第一種方法 i integer.parsein...