Chào bạn, hôm nay mình sẽ giới thiệu cho bạn một vòng lặp đặc biệt dùng để duyệt mảng, tập hợp hay danh sách, đó là vòng lặp for each trong Java.
Vòng lặp For Each trong Java
Nội dung của bài viết này gồm:
-
Cú pháp, ý nghĩa của vòng lặp for each trong java
-
Ưu nhược điểm của for each? Khi nào thì nên sử dụng nó.
-
Một số ví dụ về vòng lặp for-each trong java
1. Cú pháp, ý nghĩa của vòng lặp for each trong java
Vòng lặp for each (hay được gọi là enhanced for) trong Java được giới thiệu trong phiên bản Java 5 (hiện tại đã ra tới phiên bản Java 14).
Vòng lặp for each cung cấp một cách tiếp cận khác để duyệt mảng hoặc collection trong Java tốt hơn.
Nó chủ yếu được sử dụng để duyệt qua các phần tử của mảng hoặc collection.
For each cũng được bắt đầu với từ khóa for
giống như trong vòng lặp for thông thường.
Nhưng thay vì khai báo hay khởi tạo biến đếm trong vòng lặp thì chúng ta sẽ khai báo một biến có cùng loại với kiểu cơ sở của mảng, theo sau là dấu hai chấm “ :
” và cuối cùng là tên mảng.
Vòng lặp for each giúp chúng ta duyệt các phần tử trong mảng hay collection mà không cần đến index của các phần tử đó.
Cú pháp của vòng lặp for each trong Java
for (kieuDuLieu bienDaiDien : tenMang) {
// Khối lệnh được lặp lại
}
Ví dụ: Ta có mảng arr = {1, 2, 5, 8, 9};
và bây giờ ta muốn in ra tất cả các phần tử trong mảng mà không sử dụng biến đếm.
// Khai báo một mảng
int[] arr = {1, 2, 5, 8, 9};
// Sử dụng vòng lặp for each để lặp qua mảng
for(int n : arr) {
System.out.println(n);
}
Kết quả khi chạy chương trình là:
1
2
5
8
9
2. Ưu nhược điểm của for each và khi nào nên sử dụng vòng lặp for each trong Java?
Mỗi vòng lặp trong Java được thiết kế với mục đích riêng và nó có ưu nhược điểm khác nhau trong từng trường hợp.
Vòng lặp for each trong Java cũng vậy.
Ưu điểm của vòng lặp for each trong Java
-
Sử dụng vòng lặp for each làm cho code dễ đọc hơn
-
Giảm bớt khả năng lỗi khi lập trình
Nhược điểm của vòng lặp for each trong Java
-
Vòng lặp for each không thể chỉnh sửa mảng, chỉ được dùng để duyệt qua tất cả các phần tử trong mảng.
-
Không thể tìm được vị trí phần tử trong mảng.
-
Vòng lặp for each chỉ duyệt được xuôi, không thể duyệt ngược mảng.
Như bạn thấy, vòng lặp for each có ưu nhược điểm như thế...
Vậy khi nào thì nên sử dụng for each trong lập trình Java?
Bạn có thể sử dụng for each khi bạn chỉ muốn duyệt qua tất cả các phần tử trong mảng hay collection, duyệt từ đầu đến cuối, không bỏ sót một phần tử nào, không cần chỉnh sửa giá trị mảng, không cần tìm index của phần tử trong mảng hay collection.
3. Một số ví dụ về vòng lặp for each trong Java.
Để hiểu rõ cách hoạt động của vòng lặp for each trong Java, hãy cùng làm một vài ví dụ.
Hãy nhớ rằng!
> Bạn có thể hiểu khi đọc qua ví dụ nhưng để chuyển hóa thành kỹ năng thì phải qua bước luyện tập, gõ từng dòng code. Đây mới là phương pháp học lập trình Java giúp bạn thành công.
> Học Lập trình Java bài bản, đi làm nhanh với KHÓA HỌC JAVA cùng chuyên gia doanh nghiệp.
Nào, giờ thì bắt tay làm ví dụ cùng với mình nào.
Ví dụ 1: Sử dụng vòng lặp for each lặp qua mảng số
Ví dụ đầu tiên rất đơn giản, đó là mình có một mảng gồm 8 phần tử arr = {8, 5, 7, 3, 9, 2, 1, 6}
.
Để in ra tất cả các phần tử trong mảng mình sẽ sử dụng vòng lặp for each.
Code:
public class ForEachDemo {
public static void main(String[] args) {
int[] arr = {8, 5, 7, 3, 9, 2, 1, 6};
for(int n : arr) {
System.out.print(n);
System.out.print(" ");
}
}
}
Kết quả khi chạy chương trình trên:
8 5 7 3 9 2 1 6
Ví dụ 2: Tìm giá trị lớn nhất trong mảng bằng vòng lặp for each
Một ví dụ phức tạp hơn một chút, mình cũng sử dụng mảng arr = {8, 5, 7, 3, 9, 2, 1, 6}
như ví dụ 1.
Nhưng bây giờ chúng ta sẽ sử dụng vòng lặp for each để tìm ra phần tử lớn nhất trong mảng.
Code:
public static void main(String[] args) {
int[] arr = {8, 5, 7, 3, 9, 2, 1, 6};
int max = arr[0];
for(int n : arr) {
if(max < n) {
max = n;
}
}
System.out.println("Phần tử lớn nhất trong mảng là: " + max);
}
Kết quả khi chạy chương trình trên là:
Phần tử lớn nhất trong mảng là: 9
Ví dụ 3: Dùng vòng lặp for each để duyệt phần tử của Collections
import java.util.ArrayList;
import java.util.List;
public class ForEachDemo {
public static void main(String[] args) {
// Tạo một ArrayList
List<String> list = new ArrayList<String>();
// Thêm phần tử vào ArrayList
list.add("Java");
list.add("C++");
list.add("PHP");
list.add("Python");
list.add("C");
// Sử dụng vòng lặp for each để duyệt ArrayList
for (String obj : list) {
System.out.println(obj);
}
}
}
Kết quả:
Java
C++
PHP
Python
C
Ví dụ 4: Ví dụ chứng minh vòng lặp for each trong Java không thể chỉnh sửa mảng
public class ForEachDemo {
public static void main(String[] args) {
int[] arr = {8, 5, 7, 3, 9, 2, 1, 6};
for(int n : arr) {
n = 99999; //Cố tình gán giá trị 99999 cho từng phần tử của mảng
}
for(int n : arr) {
System.out.print(n);
System.out.print(" ");
}
}
}
Kết quả:
8 5 7 3 9 2 1 6
Các bạn có thể thấy đó, mặc dù mình cố tình gán 99999 cho mỗi phần tử của mảng dùng for each, nhưng dường như nó là vô ích và không thể gán được.
Chúc mừng bạn đã hiểu thêm về vòng lặp for each trong Java
Như vậy, mình và các bạn vừa tìm hiểu xong về vòng lặp for each trong Java và cách sử dụng nó. Khá đơn phản và dễ hiểu phải không nào…
Hẹn gặp lại các bạn trong các bài viết tiếp theo nhé.
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #python #java #php