Đầu tiên trong số hai bạn chỉ định là vòng lặp C for
cổ điển. Điều này cho phép các lập trình viên kiểm soát các tiêu chí lặp lại và cho phép ba hoạt động: khởi tạo; kiểm tra vòng lặp; biểu thức tăng dần. Mặc dù nó được sử dụng thường xuyên để từng bước lặp lại cho một số thiết lập của những nỗ lực, như trong ví dụ Yor:
for (int i=0; i < N : i++)
Có rất nhiều trường hợp hơn trong mã nơi for
đã sử dụng để lặp qua các bộ sưu tập:
for (Iterator iter = myList.iterator(); iter.hasNext();)
Để giảm bớt sự sắp xếp kiểu thứ hai (khi mệnh đề thứ ba thường không được sử dụng), và để khen Generics được giới thiệu trong Java 1.5, phần thứ hai trong hai ví dụ của bạn - tăng cường cho vòng lặp hoặc for-each loop
- đã được giới thiệu.
Thứ hai được sử dụng với mảng và bộ sưu tập Chung. See this documentation. Nó cho phép bạn lặp qua một bộ sưu tập chung, nơi bạn biết loại Collection
, mà không cần phải đưa kết quả của Iterator.next()
đến một loại đã biết.
Hãy so sánh:
for(Iterator iter = myList.iterator; iter.hasNext() ;) {
String myStr = (String) iter.next();
//...do something with myStr
}
với
for (String myStr : myList) {
//...do something with myStr
}
này 'kiểu mới' cho vòng lặp có thể được sử dụng với mảng cũng như:
String[] strArray= ...
for (String myStr : strArray) {
//...do something with myStr
}
Hoặc mảng. Hoặc thu thập thông thường nếu biến của bạn thuộc loại Object :-) – ChssPly76
Nó không dành riêng cho các bộ sưu tập chung. –
@pavel - tôi sẵn sàng làm cho câu trả lời này thành wiki nếu bạn muốn thêm vào nó. – akf