經典javase面試題

好多java開發人員在面試時經常會遇到一些數據類型轉換的題目,乍一看覺得簡單可是又有些不確定。。。相信很多人都有這個時候,那麼今天我給大家將一個我面試的題,希望和衆多程序猿一起分享!以下是代碼:

class test{

    public static void main(String[] args){

        byte by = 150;

       System.out.println(by);

    }

}

  問程序運行後出現什麼結果?請幫忙修改代碼。

估計好多人都會說肯定不對,而且程序確實有錯 。。。。。。因爲java程序中整數默認的都是int型,那如果把整數賦值給byte肯定會出現運算精度丟失的問題,相信大家也都知道!有人經過修改後呢 是這樣的    byte by = (byte)150;  強轉一下不就行了嗎?是這樣的 但事實最後程序最後的結果是 -106!!!驚恐

好了我來講一下原因!仔細聽

150的補碼:00000000 00000000 00000000 10010110
現在我們拿了長度爲8的一個空間來截取,截取之後的補碼:


截取之後的補碼:10010110


但是輸出語句輸出的都是原碼的十進制形式,所以需要求出截取之後的原碼


截取之後的補碼:10010110
反碼:10010101
原碼:11101010=-106

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章