[英]Do While Loops Versus For Loops in Java for Counting
在計算時,是應該使用do-while
循環還是for
循環? 因為這:
class Main {
public static void main(String[] args) {
int times = 1;
do {
System.out.println("I have printed " + times + " times.");
times++;
} while (times < 6);
}
}
似乎與此完全相同:
class Main {
public static void main(String[] args) {
for (int times = 1; times < 6; times++) {
System.out.println("I have printed " + times + " times.");
}
}
}
這是速度的差異嗎? 偏愛? 情況? 個人怪癖? 某種“Java社會禁忌”? 我不知道。 似乎可以用於有效計數,只需要更多。 兩者都打印完全相同的東西。
System.out.println("Many thanks!!");
你是對的,這些做同樣的事情(除了一個開始計數為0而另一個開始計數為1,但這只是一個實現細節)。 如果您的程序事先知道(在循環開始之前)您希望循環迭代多少次,那么大多數Java開發人員會告訴您使用for
循環。 這就是它的設計目標。
while
循環或do while
循環更適合在退出循環之前查找特定值或條件的情況。 (類似於count >= 10
或userInput.equals("N")
。任何評估為布爾值True / False值的東西。)
面對這些困境時,目標是可讀性和熟悉性。 您不應該關注微觀優化。 注重可讀性並明確傳達您的意圖。 像其他人一樣在類似的情況下做。
就像@ Bill-The-Lizard所說的那樣, while
循環向你的代碼的讀者建議你選擇它,因為你沒有計算,但重復直到滿足條件。 至少一次 - 否則你選擇while(...){ }
循環。
換句話說, for
, do {} while()
和while() { }
通常工作相同。 但是你可以更好地傳達你對你特定邏輯的意圖。
這取決於程序員選擇何時使用for循環或while循環,但大多數程序員遵循的一般做法是
for(;true;)
永遠循環)。 例如,循環運行10次或n次,其中n是變量 for(int i = 0; i < n; i++) {
//Do something
}
while(x != 0) {
//Do something;
x--;
}
while(true) {
// some code to execute on which the condition depends
if(condition is true) {
break;
}
}
我認為這更像是一種可讀性和語法糖。 這一條件
while (condition)
也可以寫成
for (; condition; )
但顯然第一個看起來好多了,而且更具可讀性。
按照慣例,大多數Java開發人員使用for循環 有效的Java建議使用循環而不是while循環,因為循環變量可以使用更嚴格的范圍來減少錯誤。 http://www.corejavaguru.com/effective-java/items/45
最新版本的Java還允許以下內容
IntStream.range(0, 6).forEach(
i -> System.out.println("I have printed " + i + " times.")
);
除了個人偏好之外,這個還有一個優點,即索引由運行時維護,程序員不需要++i
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.