2011-07-26 24 views
-1

這款myCar評估的是什麼?它是somePart()的返回值嗎?這個myCar評估什麼?它是somePart()的返回值嗎?

boolean myCar = true || somePart(); 
+2

'somePart'只會在第一個條件爲false時被評估,因此它將不會被評估。 &&和||運算符對兩個布爾表達式執行條件與和操作。這些運算符表現出「短路」行爲,這意味着第二個操作數僅在需要時才被評估。 http://download.oracle.com/javase/tutorial/java/nutsandbolts/op2.html –

+0

我並不想聽起來粗魯,但最好的學習方法是嘗試編寫一個示例程序,您可以使用它來測試它並查看結果是什麼。 –

+0

在Java中,有'boolean'而不是'bool'。所以編輯。 –

回答

1

我會假設它總是會返回true。事實上somePart()永遠不會被評估。

0

由於它是真的和somePart()之間的|| operator,它總是會返回true。

它檢查條件是否爲真,如果它發現這樣的條件是真的,那麼它被設置爲真。這是爲什麼somePart()電話永遠不會被評估的間接原因。

1

它被評估爲真,somePart()永遠不會被調用。

2

||運算符被稱爲「短路」運算符,因爲如果它發現評估左操作數的結果爲true,它將不會打擾評估右操作數。在你的情況下,truetrue,所以somePart()將不會被調用。

1

大聲讀出來。

"myCar equals TRUE -or- somePart()" 

由於第一個條件總是返回true,所以我們可以將功能評估短路。

0

即使somePart()返回false,它也會始終返回true。因爲somePart()甚至不會被執行。 JVM優化邏輯表達式,並且如果結果是已知的,則不運行表達式的其餘部分。

0

這是事實。總是。由於邏輯或運算符的行爲是這樣的:

Input 1 Input 2 Output 
------- ------- ------ 
0  0   0 
0  1   1 
1  0   1 
1  1   1 
+0

真值表中的一列應該是「真」的 – pseudosudo

相關問題