《java解惑》筆記三

2021-08-17 09:16:22 字數 1279 閱讀 8461

public

static

void

main(string args)

//控制台列印:

//1e240

//-7616

//-7616

類似+=復合賦值操作符,e1 op= e2 等價於 e1 = (t)((e1)op(e2)),其中t是e1的型別。上面的例子中,當進行加法時,會將運算元提公升為int,得到123456,然後會轉化為short,截掉高位的1,剩下0xe240,這是short,但是輸出語句沒有輸出short的,最後會將0xe240提公升為int,由於short高位為1,是負數,用符號填充,及最終列印的是0xffffe240,十進位制為-7616.

public

static

void

main(string args)

+=的左側是string型別的話,右側可以是任意型別,將string型別變數放入object中,這是可行的。

public

static

void

main(string args)

//控制台輸出:

//ha

//169

「h」+」a」是字串連線,所以列印出字串;』h』+』a』是字元相加,會擴寬為int相加,char轉為int,以0填充,所以最後是72+97,最後得到169。

如果想用char連線起來,可以加乙個空白的字串「」,字串與任意型別相加都會轉成字串。

public

static

void

main(string args) ;

system.out.println(letters + "easy as " + numbers);

}//控制台列印:

//abceasy as [c@70dea4e

這題的關鍵是char陣列的tostring方法是從object繼承過來,在我的一篇部落格裡,介紹了object是陣列的getname方法,tostring方法與getname相關,jdk原始碼如下:

public string tostring()
根據上面提及的那篇部落格,char陣列的getclass().getname()就是[c,最終列印[c@70dea4e。

解決的方法有:string.valueof(numbers)將char陣列轉成乙個字串,然後拼接。等等。

得到的經驗教訓是陣列型別都應該覆蓋tostring方法。

《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解惑》筆記八

要實現i i為true public static void main string args 控制台輸出 true 7ff8000000000000 7ff8000000000000double.nan表示乙個非數字 not a number 在記憶體儲存為0x7ff8000000000000,維...

Java解惑三 迴圈之謎

byte是有符號的,範圍是 128 127。而0x90是int型別。比較的時候,不相等。如果想讓其相等,需要進行型別轉換 byte 0xff 或者 byte 0x99。自增運算子對迴圈的影響。j j 先賦值。integer.max value加一之後會變成integer.min value,這對迴圈...