Một vòng lặp for
trong java có cấu trúc sau -
for (initialization statement; condition check; update)
loop body;
Như bạn thấy, có bốn câu ở đây -
- khởi tuyên bố: Tuyên bố này được thực hiện chỉ một lần, khi vòng lặp được nhập lần đầu tiên. Đây là một câu lệnh tùy chọn, có nghĩa là bạn có thể chọn để trống trường này. Nó thường được sử dụng cho một số mục đích khởi tạo.
- Kiểm tra có điều kiện: Tuyên bố này có lẽ là quan trọng nhất. Nó kiểm tra để xác minh xem biểu thức nào đó có được đánh giá là đúng hay không. Nếu có, thì việc thực hiện vòng lặp tiếp tục. Bạn có thể chọn để trống trường này, trường này sẽ được đánh giá là
true
.
- Cập nhật: Danh sách câu lệnh này được thực hiện từ trái sang phải, thường được sử dụng để tăng/giảm một số biến.
- thân vòng lặp: Phần thân của vòng lặp sẽ được thực hiện lặp đi lặp lại dựa trên giá trị chân lý của kiểm tra có điều kiện.
Về cơ bản đây là cách thực hiện sau - đầu tiên, khi vòng lặp được nhập lần đầu tiên, câu lệnh khởi tạo được thực hiện một lần. Sau đó, kiểm tra có điều kiện được thực thi để xem liệu nó có được đánh giá là đúng hay không. Nếu có, thì phần thân vòng lặp được thực hiện, nếu không việc thực thi vòng lặp kết thúc. Sau đó, (các) câu lệnh Update được thực hiện. Tiếp theo, kiểm tra có điều kiện được thực hiện một lần nữa, và nếu nó đánh giá đúng, thì một lần nữa thân vòng lặp được thực thi, sau đó câu lệnh cập nhật được thực thi, sau đó lại kiểm tra điều kiện .... bạn sẽ có được hình ảnh.
Bây giờ, về cú pháp for(; ;)
của bạn. Nó không có câu lệnh khởi tạo, vì vậy không có gì sẽ được thực hiện. Đó là tuyên bố kiểm tra có điều kiện cũng trống, vì vậy có nghĩa là nó đánh giá đúng. Sau đó, thân vòng lặp được thực hiện.Tiếp theo, vì câu lệnh cập nhật trống, không có gì được thực hiện. Sau đó, kiểm tra có điều kiện được thực hiện một lần nữa mà sẽ đánh giá lại thành true và sau đó toàn bộ quá trình này sẽ lặp lại.
Vì vậy, bạn thấy, đây là cơ bản một vòng lặp vô hạn mà không có tuyên bố khởi, mà có điều kiện kiểm tra sẽ luôn đánh giá đúng, và đó không có báo cáo cập nhật. Điều này tương đương với -
while(true)
{
.....
}
là một cấu trúc vòng lặp phổ biến khác trong java.
Khi bạn sử dụng một vòng lặp vô hạn như thế này, đó là chú ý quan trọng đối với tình trạng vi phạm như trong hầu hết các trường hợp, bạn không thể để cho một vòng lặp để chạy vô thời hạn. Để thoát ra khỏi các loại vòng này, bạn có thể sử dụng câu lệnh break
. Cấu trúc như sau -
if(some_condition_is_true)
break; // This will cause execution to break out of its nearest loop
hoặc
if(some_condition_is_false)
break;
Mặc dù chúng ta được dạy để avoi d bằng cách sử dụng vòng lặp vô hạn, tôi phạm tội một lúc (đúng) trên nhiều hơn một lần. –
Tôi cảm thấy như họ có những khoảnh khắc của họ, nơi họ có ích – user489041
Ít nhất nếu bạn sử dụng while (true) người đọc mã dường như có thể hiểu nó ... – PeterT