我正在爲OCA Java SE7 Associate考試進行學習。我的一個考試的實踐問題有下面的代碼片段:更改if語句內的布爾值?
boolean flag = true;
if (flag = false) {
System.out.println("1");
}
else if (flag) {
System.out.println("2");
}
else if (!flag) {
System.out.println("3");
}
else
System.out.println("4");
通知的if (flag = false)
條件。這個問題問這個片段的輸出是什麼。所有的數字都是作爲答案選項提供的,然後有一個選擇說「編譯器錯誤」,這是我選擇的。我錯了。輸出將3.我在Eclipse測試,它也帶回來3
然後,我
int x = 3;
int y = 1;
if (x = y) {
// whatever
}
測試,當然,得到了一個錯誤。
爲什麼可以flag
從true
改爲false
的if-statement
內,但是x的值不能改變在類似的情況?是否因爲flag
是布爾類型,x是int
?我谷歌搜索,但無法找到任何東西。
此外,這是一個很好的做法?除了在學習這門考試之外,我從未見過它。 – mishmomo
@NojoRu不,這是非常糟糕的做法,人們閱讀(可能打字)它會認爲它是'=='。實際上,許多靜態分析器(如FindBugs)會將其標記爲錯誤。 – dkatzel
我希望你會說這是一個不好的習慣。有點讓我想知道爲什麼它在考試中;僅僅因爲它可以做並不意味着它應該是。 – mishmomo