溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在Java中對類型進行強制轉(zhuǎn)換

發(fā)布時間:2021-01-16 10:38:18 來源:億速云 閱讀:174 作者:Leah 欄目:編程語言

這篇文章給大家介紹怎么在Java中對類型進行強制轉(zhuǎn)換,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

首先要明確一下轉(zhuǎn)換規(guī)則:大數(shù)轉(zhuǎn)小數(shù),多出的高位部分會被截斷。比如 int 占 4個byte(32 bit), byte占 1個byte(8bit), 那int 轉(zhuǎn) byte ,int 高位多出的那24個bit會被截斷。

例1:

int b = 233; // 正整數(shù)強轉(zhuǎn)
System.out.println((byte)b);
// 原碼:   0000 0000  0000 0000  0000 0000  1110 1001
// 補碼(內(nèi)存):0000 0000  0000 0000  0000 0000  1110 1001 // 正數(shù)的原碼、反碼、補碼都一樣

// 截取...
// 補碼(截取后-內(nèi)存):1110 1001 // 最高位是 1,說明是負數(shù),因此在顯示的時候還需要做轉(zhuǎn)化...
// 反碼:      1110 1000 
// 原碼:      1001 0111 // 16+4+2+1 = -23 (注意符號位是 1,是負數(shù))

例2:

int b = -233; // 負整數(shù)強轉(zhuǎn)
System.out.println((byte)b);
// 原碼:    1000 0000  0000 0000  0000 0000  1110 1001 // 因為是負數(shù),所以符號位是 1 
// 反碼:    1111 1111  1111 1111  1111 1111  0001 0110 // 負數(shù)的反碼,符號位不變,其它位取反
// 補碼(內(nèi)存):  1111 1111  1111 1111  1111 1111  0001 0111 // 負數(shù)的補碼等于它的反碼 + 1    

// 截取...
// 補碼(截取后-內(nèi)存):0001 0111 // 最高位是0,說明是正數(shù),正數(shù)的原碼、反碼、補碼都一樣 
// 原碼:      0001 0111 // 16+4+2+1 = 23

Note:

1. 數(shù)字在內(nèi)存中進行計算的時候始終是以補碼的形式進行的,但是顯示給我們用戶看的時候卻是以原碼的形式展示的,因此在運算之前必須先轉(zhuǎn)換成補碼的形式。
2. int 轉(zhuǎn) byte, 截斷的是高位的24個bit, int 轉(zhuǎn) short, 截斷的則是高位的16個bit,依此類推。

關(guān)于怎么在Java中對類型進行強制轉(zhuǎn)換就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI