2016-07-27 153 views
-2

於是我在一個比較科學的中期去年有這個問題,我仍然想不通爲什麼& & B和B & &一個不會計算出相同的結果在Java中,a和b是布爾值,a && b和b && a會評估相同的結果嗎?

我看到它的方式中,有4種可能的情況:

  1. A是TRUE,並且B爲真:
    • 真& &真爲Tr UE
  2. A是TRUE,並且B爲FALSE:
    • 真& &假的就是假和假& &真還是假
  3. A是假的,且B爲TRUE:
    • 假& &真是假和真& &假的就是假
  4. A是假,B是FALSE:
    • 假& &假的就是假

然而,中期的修正和教授說,一個& & b和b & & a並不總是評估相同的結果。

編輯:我不明白這是如何重複的「操作員短路」...在任何情況下,我都不會問關於AND操作的第一部分的問題......我問的都是部分和這是重複的「原始」問題不能回答我的問題。

+3

取決於'a'和'b'代表什麼。可能是'a'或'b'可能會修改另一個表達式的狀態 – SomeJavaGuy

+5

如果a和b是變量,那麼&& b和b && a **當然必須**給出相同的結果。但如果這些實際上是方法調用,事情就會不同(因爲副作用)。 – GhostCat

+0

那麼,**權限**不應該被理解爲取代**原因**。換句話說:告訴你的教授他應該證明他的陳述,或者接受他是錯的。也許你會爲我找到一些關於politer的話。 – GhostCat

回答

0

是的,你會得到相同的結果。但是如果你有a&&b而a是FALSE,那麼Java不會評估b,並且會說結果是FALSE。

+0

最終結果是一樣的。 –

+1

@VaibhavBajaj不一定。它取決於如何構建a和b:如果(((j + 1)> 2)&&(i-1 <3))vs if((i-1 <3)&&((j + = 1) > 2)) – Stultuske

相關問題