《java解惑》筆記八

2021-08-17 14:01:10 字數 1249 閱讀 8585

要實現i!=i為true

public

static

void

main(string args)

//控制台輸出

//true

//7ff8000000000000

//7ff8000000000000

double.nan表示乙個非數字(not a number),在記憶體儲存為0x7ff8000000000000,維基百科iee754 nan,符號位為0或1,指數字全為1,尾數不全為0。nan與任何都不相等,包括自己。

要實現i!=i+0為true,i不能為浮點數。

public

static

void

main(string args)

//控制台輸出:

//true

i不是乙個數字,使用字串過載,可以實現上面的表示式為true;

public

static

void

main(string args)

}

無符號右移》,與右移》的區別是:>>>會將包括符號位的所有位元位整體右移,捨掉超出部分,左邊補零;而》右移不包括符號位,符號位不動,且左邊用符號位填充。以-1右移2位為例:

public

static

void

main(string args)

//控制台輸出:

//ffffffff

//ffffffff

//3fffffff

還當執行》=這種復合賦值操作符時,會將short提公升為int,0xffff提公升為0xffffffff,無符號右移1位,得到0x7fffffff,會轉化為short,接著強制把高位給截掉,然後又得到0xffff,最終無限迴圈。

得到的經驗教訓是不要在byte,char,short變數上使用+=這種復合賦值操作符。

public

static

void

main(string args)

//控制台輸出:

//true

如何實現i<=j&&i>=j,好像只能i==j,但是題目中又要求i!=j。在jdk1.5後,有了自動裝箱與自動拆箱,integer物件i和j進行<=和》=比較時,進行拆箱,將值比較,而==與!=是物件引用的比較,比較i和j是否指向同乙個物件,顯然不是,所以符合以上所有條件。

《java解惑》筆記一

isodd方法用來確定傳來的引數是否是奇數,由於當傳入負數i時,i 2的值為 1或0,負奇數也不能判斷正確。由於偶數是對2取余為0,所以應該將i 2 1修改為i 2 0。修改後,奇數對2取餘不是正1或負1都能滿足。public static boolean isodd int i public st...

《java解惑》筆記三

public static void main string args 控制台列印 1e240 7616 7616類似 復合賦值操作符,e1 op e2 等價於 e1 t e1 op e2 其中t是e1的型別。上面的例子中,當進行加法時,會將運算元提公升為int,得到123456,然後會轉化為sho...

Java解惑八 很多其它庫之謎

將執行緒的啟動方法start 寫成了run ps 管程 monitor 鎖有待進一步理解。執行緒中鎖的問題。理解不深刻。反射會造成訪問其它包中的非公共型別的成員。引起執行期異常。遮蔽 thread.sleep 方法遮蔽了自定的方法。反射 怎樣例項化非靜態內部類以及靜態內部類。system.out.w...