我一直卡在的部分是 boolean(0 % 2 !=0)
== false。我的意思是如果2進入0,0次,那麼剩下的將是2,而2不等於0.所以它應該是真的。但是,當我把我的Java程序中的布爾值,它被視爲假。有人知道爲什麼`java(0%2!= 0)== false`
我可以包裹我的頭的唯一合乎邏輯的答案是,也許整數進入0和無限次數,因此被認爲是假的,任何人?
我一直卡在的部分是 boolean(0 % 2 !=0)
== false。我的意思是如果2進入0,0次,那麼剩下的將是2,而2不等於0.所以它應該是真的。但是,當我把我的Java程序中的布爾值,它被視爲假。有人知道爲什麼`java(0%2!= 0)== false`
我可以包裹我的頭的唯一合乎邏輯的答案是,也許整數進入0和無限次數,因此被認爲是假的,任何人?
%
返回除法後的餘數。除以任何東西(本身除外!)爲零,所以沒有餘數。因此0 % 2
是0
。
0%2 = 0,因爲0/2 = 0和提醒0,或者0 * 2 +提醒= 0
你只是誤解模量。
如果2進入0,0次,然後剩餘部分將是2.
它不是2 goes into 0
但0 goes into 2
,所以等分的結果爲0,並且該提醒是0。
你的意思是「分裂」和「剩餘」......(提醒是你在Postit紙條上寫的,而devision不是英語單詞......雖然它可能是一種中世紀折磨形式的委婉說法。 「這個囚犯被帶到了地下城,並被一把紅熱的撲克」剔除「了。) –
我想你混合了0%2和2%0(這是不可能的)。 0%n是始終等於0
OK,讓我們剖析該...
1)0 % 2
模是有限分裂的其餘部分。例如10%3是10/3的其餘部分。 10/3是3 +⅓。所以其餘的是1.
0%2是0/2的其餘部分。 0/2 = 0,沒有休息,因此0%2 = 0。
2)0 % 2 != 0
這意味着0%2不同於0。現在我們知道這是假的。
3)boolean(0 % 2 != 0)
它只是鑄造。您將結果轉換爲布爾值。它不僅僅是一個錯誤的假設,它取得了Java值false
。
4)
的==
意味着有一個測試在這裏。測試可以簡化(如上所示)爲false == false
。是false
等於false
?是的。結果是true
。
它與運算符優先級有關,也就是Java解釋器對運算符進行評估的順序。
查看here的文檔。一種有用的縮寫,是BUDMASRELCA - 乙球拍,ü進制,d IV- 中號 ultiplication(實際上乘法因爲它包括模),甲 ddittion- 小號 ubtraction,ř elational,E quality,L ogical,C傳統(三元),A調整。 我錯過了按位運算符,但它們可以分組在邏輯下,它們優先於正常的邏輯運算符。
0%2!= 0爲0%評價2(乘法)第一和然後它的結果0與!= 0。(平等)
在內部評價,編譯器構建的二進制表達式樹來表示順序,如下所示,使用運算符作爲根和葉作爲值或進一步的運算符(在遞歸情況下)。因此,需要評估具有運算符的子樹,然後才能使用它的葉子值對根運算符進行評估。
!=
/\
% 0
/\
0 2
我很積極,這不是一個編碼錯誤,我直接從我的書中複製這個,它也在我的講座中多次引用。 – Michael
這就是......不是'%'的意思。 –