我在看這個Java代碼:在Java中,何時發生後增量操作?
while (n-- != 0) {
if (searchMe.charAt(j++) != substring.charAt(k++)) {
continue test;
}
}
我感到困惑的時候,準確地說,n--
操作發生。是否在if
聲明之後?
我在看這個Java代碼:在Java中,何時發生後增量操作?
while (n-- != 0) {
if (searchMe.charAt(j++) != substring.charAt(k++)) {
continue test;
}
}
我感到困惑的時候,準確地說,n--
操作發生。是否在if
聲明之後?
每次評估while
條件時都會發生n--
操作;特別是在評估!=
運算符的左側時。它與if
聲明無關。在每次循環迭代開始時評估while
條件;如果它的計算結果爲true
,則會執行while
循環的主體(if
語句),但在n--
操作完成之後就會執行該操作。 (但當然,接下來的循環迭代。)
當while循環第一次運行時,如果n的值不等於零(因爲它是後減量),則檢查n的值。
一旦條件得到評估,即進入while循環之後,n的值將減1(n-1)。這個新值將在while循環中用於特定的迭代。
當while循環檢查條件時,下一次迭代檢查值(n-1)是否等於零,等等。
實際上,當評估'while'循環測試時,無論是否輸入循環,'n'的值都會遞減。因此,舉例來說,如果'while'循環首次運行時'n == 0',那麼'while'循環後面的語句'n'將是'-1'。 –
是的,我同意你泰德霍普。 :) –
--
或++
運算符如果放在操作數之後會在包含它的語句結束後發生。如果放在操作數之前,那麼它會在該語句之前發生。
在這種情況下,聲明是while
所以它會在它之後發生,意思是在評估while
聲明中的條件之後。
增量或減量發生在評估操作員時,這可能會在語句完成之前發生。因此,像'a [i ++] = a [i]'這樣的語句會將一個元素複製到數組'a'的前一個元素中。 (也就是說,評估右側「a [i]」時的'i'的值是通過評估[數組訪問表達式](http:// docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.13)作業左側的'a [i ++]'。) –
沒有這樣的事情作爲「如果循環」。 – ubiquibacon
@ubiquibacon - 啊是的;-)好的確定謝謝 – Coffee