09.27 java面試中的“偏、難、怪”

下面這些問題的答案也許會出乎你的意料,看看能答對幾道吧。

java中boolean類型變量佔幾個字節

絕大部分人的回答是一個字節,但實際上應該區分這個變量是被存放在堆上,還是棧上;

如果是堆上,那麼是一個字節;如果是棧上,應該是4個字節;

如何證明:寫一個main方法,定義一個boolean類型變量,然後編譯為字節碼,再使用javap命令查看對應的字節碼,發現是這個樣子的:i_const_1;說明在字節碼層面將boolean類型的處理成了int類型;

java面試中的“偏、難、怪”

boolean佔用幾個字節

java中,0有幾種表示方式

看到這個問題,估計很多人會一臉懵~;

那麼換一種稍微簡單點的問法,0x0000000和0x8000000 的區別是什麼,前者表示+0.0 後者表示-0.0;

那麼0x0000000 和 0x8000000相等嗎?儘管內存中存儲的值不同,但在語言層面,二者是相等的,比較會返回true;

那麼java中的0到底有幾種表示方式呢?

0、false、\\\\u0000、0L、0F、0D;每一種基本類型數據都對應其一種表示方式。

java面試中的“偏、難、怪”

關於NAN的含義以及數值比較問題

NAN的全稱是Not an num;

NAN和任何數值比較,都是不相等的;也就是 NAN != a 無論a是什麼值,都會返回true;

但其他比較,比如NAA>a 或者 NAN<=a都會返回flase

java面試中的“偏、難、怪”


分享到:


相關文章: