23 下列的Java語言程式執行後之輸出為何?
(A)16
(B)20
(C)74
(D)80
統計: A(116), B(110), C(124), D(35), E(0) #2397212
詳解 (共 7 筆)
先單看 ( i AND 0x00000001 ),運算元有 0x 為16進位
這段用意是把 i 所有的位元改成 0 除了最後一個(最右邊)看要 & 0或1
請看 i = 0~4 範例 :
00000000 & 00000001 = 00000000 = false
00000001 & 00000001 = 00000001 = true
00000010 & 00000001 = 00000000 = false
00000011 % 00000001 = 00000001 = true
00000100 & 00000001 = 00000000 = false
這裡不管兩邊用16進位或2進位來比較都不影響理解
然後題目的 if 判斷是 if((i & 0x00000001) == 0)
所以順序會是相反的
sb 就會變成 =>
This is a testThat is a pencilThis is a testThat is a pencilThis is a test
接著就按照 "s" "t" 來做分割
附上圖參考(有錯誤請指教)

This is a testThat is a pencilThis is a testThat is a pencilThis is a test
若有錯誤請不吝嗇指教
B1的答案是對的
StringTokenizer(sb.toString(),"ts");
"" 中的ts代表,如果遇到t或是s就將字串切一刀(t 與 s 也隨之去掉)
f(( i & 0x00000001) == 0) 我是猜I值轉二進位然後跟0x00000001進行AND
雖然不曉得你猜測的是不是對的,但是依照你的說法去測試,結果跟答案是符合的。
請問if(( i & 0x00000001) == 0)是什麼意思?