Vòng lặp for
1. Vòng lặp for truyền thống
Phần tiêu đề “1. Vòng lặp for truyền thống”for (int i = 0; i < 5; i++) { System.out.println("Lần lặp: " + i);}Cú pháp gồm ba phần, cách nhau bởi dấu ;:
- Khởi tạo (
int i = 0) - chạy một lần duy nhất trước khi vòng lặp bắt đầu - Điều kiện (
i < 5) - kiểm tra trước mỗi lần lặp, dừng khi sai - Cập nhật (
i++) - chạy sau mỗi lần lặp
// Đếm ngượcfor (int i = 10; i > 0; i--) { System.out.println(i);}
// Bước nhảy khác 1for (int i = 0; i <= 20; i += 5) { System.out.println(i); // 0, 5, 10, 15, 20}2. Vòng lặp for-each (enhanced for)
Phần tiêu đề “2. Vòng lặp for-each (enhanced for)”Khi chỉ cần duyệt qua từng phần tử của mảng hoặc collection mà không cần chỉ số, for-each gọn và an toàn hơn:
int[] scores = {90, 85, 78, 92};
for (int score : scores) { System.out.println(score);}import java.util.List;
List<String> names = List.of("An", "Bình", "Chi");for (String name : names) { System.out.println(name);}Cú pháp: for (<kiểu> <biến> : <mảng_hoặc_collection>).
3. Khi nào dùng for truyền thống, khi nào dùng for-each
Phần tiêu đề “3. Khi nào dùng for truyền thống, khi nào dùng for-each”- Dùng
for-eachkhi chỉ cần duyệt tuần tự qua từng phần tử, không quan tâm chỉ số - Dùng
fortruyền thống khi cần chỉ số (ví dụ để sửa phần tử tại vị trí cụ thể, hoặc duyệt theo bước nhảy khác 1, hoặc duyệt ngược)
int[] numbers = {1, 2, 3, 4, 5};
// Cần chỉ số để SỬA phần tử -> phải dùng for truyền thốngfor (int i = 0; i < numbers.length; i++) { numbers[i] = numbers[i] * 2;}⚠️ for-each chỉ cho phép đọc phần tử - không thể dùng nó để gán giá trị mới vào mảng gốc.
Tổng kết
Phần tiêu đề “Tổng kết”fortruyền thống:for (khởi tạo; điều kiện; cập nhật) { ... }- linh hoạt, phù hợp khi cần chỉ sốfor-each:for (kiểu biến : mảng_hoặc_collection) { ... }- gọn, an toàn, phù hợp khi chỉ cần đọc tuần tựfor-eachkhông dùng để sửa phần tử trong mảng/collection gốc