Quy ước cho một vòng lặp vô hạn trong Java là gì? Tôi có nên viết while(true)
hoặc for(;;)
không? Cá nhân tôi sẽ sử dụng while(true)
vì tôi sử dụng trong khi vòng lặp ít thường xuyên hơn.Java: Công ước vòng lặp vô hạn
Trả lời
Không có sự khác biệt về mã byte giữa while(true)
và for(;;)
nhưng tôi thích while(true)
vì nó ít gây nhầm lẫn (đặc biệt đối với người mới sử dụng Java).
Bạn có thể kiểm tra xem nó với mã này dụ
void test1(){
for (;;){
System.out.println("hello");
}
}
void test2(){
while(true){
System.out.println("world");
}
}
Khi bạn sử dụng lệnh javap -c ClassWithThoseMethods
bạn sẽ nhận được
void test1();
Code:
0: getstatic #15 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #21 // String hello
5: invokevirtual #23 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: goto 0
void test2();
Code:
0: getstatic #15 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #31 // String world
5: invokevirtual #23 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: goto 0
trong đó cho thấy cùng một cấu trúc (trừ "hello" vs chuỗi "thế giới").
1: để giải thích – Aubin
+1 để phân biệt giữa "dễ" để đọc và * hiểu *. Một cái gì đó mọi câu trả lời khác đều thất bại. – ChiefTwoPencils
Tôi nghĩ rằng đã đến lúc Java bắt đầu xây dựng vòng lặp vô hạn nên chúng tôi không cần giải pháp thay thế, như các ngôn ngữ khác. Tôi có thể đề nghị 'do {}' không có 'while' là bắt buộc hay đơn giản là' loop {} '. –
Tôi thích while(true)
, bởi vì tôi sử dụng trong khi vòng lặp ít thường xuyên hơn cho vòng lặp. Đối với các vòng lặp có sử dụng tốt hơn và while(true)
sạch hơn và dễ đọc hơn for(;;)
Một lập luận khác ủng hộ khi (đúng) là khả năng bảo trì: true có thể trở thành một điều kiện logic trong tương lai – Aubin
@Aubin OTOH, 'for (;;)' dễ chịu hơn khi chơi golf –
@Aubin, vì vậy phần giữa của ' for'! Chỉ cần gắn nó vào như 'for (; condition(););'. Sử dụng 'for' cũng có nghĩa là bạn có thể dễ dàng thêm một biến để tính số lần lặp của vòng lặp (hoặc khác 'giữa các lần lặp lại') sau thứ hai của hai dấu chấm phẩy. – AJMansfield
Tùy thuộc vào bạn. Tôi không nghĩ rằng có một quy ước cho một điều như vậy. Bạn có thể sử dụng while(true)
hoặc for(;;)
Tôi có thể nói rằng tôi gặp phải thường xuyên hơn while(true)
trong mã nguồn. for(;;)
ít được sử dụng và khó đọc hơn.
Một lập luận khác ủng hộ khi (đúng) là duy trì: đúng có thể trở thành một điều kiện logic trong tương lai – Aubin
Không có gì "khó đọc" về 'cho ...' một từ ba chữ cái của nó. – ChiefTwoPencils
Cuối cùng, đó là sự lựa chọn của bạn. Tham chiếu Java sau đây sử dụng định dạng for (;;)
: The for Statement.
Tuy nhiên, while(true)
được sử dụng thường xuyên hơn trong các vòng lặp vô hạn trong trải nghiệm của tôi.
for(;;)
hút, hoàn toàn không trực quan để đọc cho các tân binh. Vui lòng sử dụng while(true)
để thay thế.
- 1. Vòng lặp vô hạn JavaScript?
- 2. Jquery - vòng lặp vô hạn
- 3. Java: vòng lặp vô hạn sử dụng Scanner in.hasNextInt()
- 4. Vòng lặp vô hạn trong F #
- 5. C# nổi vòng lặp vô hạn
- 6. Vòng lặp vô hạn trong haskell? (newbie)
- 7. Kết thúc vòng lặp vô hạn
- 8. Đoạn mã scala vòng lặp vô hạn
- 9. vòng lặp vô hạn trong c + +
- 10. Prolog predicate - vòng lặp vô hạn
- 11. vòng lặp vô hạn trong java.util.HashMap
- 12. Sự khác nhau giữa vô hạn trong khi vòng lặp và vòng lặp là gì?
- 13. finalizer bị mắc kẹt trong vòng lặp vô hạn
- 14. Vòng lặp vô hạn khi ghi đè initWithCoder
- 15. Biểu thức chính quy Javascript - vòng lặp vô hạn exec
- 16. Vòng lặp vô hạn PHP hoặc jQuery setInterval?
- 17. Xây dựng Python đi vào vòng lặp vô hạn
- 18. vòng lặp vô hạn dòng cin, tại sao?
- 19. Tìm vòng lặp vô hạn đang diễn ra?
- 20. Có thể đưa GCC vào vòng lặp vô hạn không?
- 21. vòng lặp vô hạn trong lập trình chức năng?
- 22. Vòng lặp vô hạn sử dụng MPI_Irecv và MPI_Test
- 23. Arel gây ra vòng lặp vô hạn trên tập hợp
- 24. WPF rơi vào vòng lặp vô hạn khi UseLayoutRounding = "True"
- 25. biểu hiện thường xuyên đi vào vòng lặp vô hạn
- 26. Dừng vòng hoa chết trong vòng lặp vô hạn Mục tiêu C
- 27. vòng lặp lập lịch trình vòng lặp java
- 28. Điều gì xảy ra khi bạn có vòng lặp vô hạn trong mã xem Django?
- 29. Vòng lặp vô hạn bằng cách sử dụng cặp đối sánh Perl regex
- 30. Cách tốt nhất để đạt được Vòng lặp vô hạn song song là gì?
Tôi muốn thực hiện 'while (running)', vì vậy tôi có cách thoát khỏi nó. – NilsH
'break' có thể thoát ra. – Justin
cho (;;) không đẹp. trong khi (chạy) là một _LOT_ dễ đọc hơn – radai