Java中的強制類型轉換


例如,當程序中需要將 double 型變量的值賦給一個 int 型變量,該如何實現呢?

顯然,這種轉換是不會自動進行的!因為 int 型的存儲范圍比 double 型的小。此時就需要通過強制類型轉換來實現了。

復制代碼
public class HelloWorld{
    public static void main(String[] args) {
        double heightAvg1=176.2;
        int heightAvg2=(int)heightAvg1;
        System.out.println(heightAvg1);
        System.out.println(heightAvg2);
    }
}
復制代碼

一開始heightAvg1double類型的,轉換成int類型的話要(int)heightAvg1

規律一:當把大的類型轉化為小的類型的時候,因為補碼的換算問題,所以可能會產生一些想不到數據

int  i = 35;
byte b = (byte)i;

運行結果:35

int  i = 128;
byte b = (byte)i;

運行結果:-128


規律二:小數在轉化為整數的時候是舍棄小數位

double d = 6.4;
int i = (int)d;

運行結果:6


擴展:數據的原反補三碼

數據類型的最高位是符號位 --- 如果最高位是0,則表示一個正數;如果最高位是1,則表示一個負數。

計算機中存儲的是數據的補碼,計算的也是數據的補碼

直接計算出來的二進制數字是數據的原碼

如果是正數,那么原反補三碼一致

int i = 7;

00000000 00000000 00000000 00000111 原碼

00000000 00000000 00000000 00000111 反碼

00000000 00000000 00000000 00000111 補碼

如果是負數,那么反碼是在原碼的基礎上,最高位不變,其余位0<->1;補碼是在反碼的基礎上+1

int j = -9;

10000000 00000000 00000000 00001001 原碼

11111111   11111111   11111111  11110110  反碼

11111111   11111111   11111111  11110111  補碼

注意:規定用-0表示當前類型的最小值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM