Ở các bài học trước, bạn đã biết cách sử dụng biến để lưu trữ một giá trị đơn lẻ như tuổi, điểm số hay tên của một cá nhân. Tuy nhiên, nếu chương trình cần quản lý điểm thi của 50 học sinh hay giá của 100 sản phẩm, việc tạo 50 hay 100 biến riêng biệt sẽ khiến mã nguồn trở nên cồng kềnh và khó quản lý. Đây chính là lúc chúng ta cần đến Mảng (Array).
1. Mảng Một Chiều Trong Java Là Gi?
Mảng là một cấu trúc dữ liệu cho phép lưu trữ một danh sách cố định các phần tử có cùng kiểu dữ liệu dưới một tên biến duy nhất. Các phần tử trong mảng được sắp xếp liên tiếp nhau và được quản lý thông qua vị trí (gọi là chỉ số hay index).
Các đặc điểm quan trọng của mảng trong Java bao gồm:
- Kích thước cố định: Khi một mảng được tạo ra, số lượng phần tử của nó không thể thay đổi (không thể tăng thêm hay giảm đi).
- Cùng kiểu dữ liệu: Tất cả phần tử trong mảng phải thuộc cùng một kiểu (ví dụ: toàn bộ là
int,String, hoặcdouble). - Chỉ số bắt đầu từ 0: Phần tử đầu tiên của mảng nằm ở vị trí
0, phần tử tiếp theo ở vị trí1, và phần tử cuối cùng nằm ở vị tríkích_thước - 1.
2. Cách Khai Báo Và Khởi Tạo Mảng Một Chiều
Trong Java, bạn có thể khai báo và khởi tạo mảng theo hai cách chính tùy thuộc vào việc bạn đã có sẵn dữ liệu hay chưa.
Cách 1: Khai báo với độ dài cố định (chưa có giá trị ban đầu)
Cú pháp:
kiểu_dữ_liệu[] tên_mảng = new kiểu_dữ_liệu[kích_thước];Ví dụ:
// Khởi tạo mảng lưu 5 số nguyên. Các phần tử mặc định sẽ nhận giá trị 0.
int[] ages = new int[5];
// Khởi tạo mảng lưu 3 chuỗi. Các phần tử mặc định nhận giá trị null.
String[] names = new String[3];Cách 2: Khởi tạo mảng trực tiếp kèm giá trị
Nếu đã biết trước các phần tử, bạn có thể truyền thẳng danh sách giá trị vào trong cặp dấu ngoặc nhọn {}:
int[] scores = {9, 8, 10, 7, 6};
String[] colors = {"Red", "Green", "Blue"};3. Truy Xuất Và Thay Đổi Giá Trị Phần Tử
Để lấy hoặc gán giá trị cho một phần tử trong mảng, bạn sử dụng cú pháp tên_mảng[chỉ_số].
public class ArrayBasic {
public static void main(String[] args) {
// Khởi tạo mảng gồm 3 phần tử
int[] numbers = {10, 20, 30};
// Truy xuất giá trị phần tử đầu tiên (chỉ số 0)
System.out.println("Phần tử đầu tiên: " + numbers[0]); // In ra 10
// Thay đổi giá trị của phần tử thứ hai (chỉ số 1)
numbers[1] = 25;
System.out.println("Phần tử thứ hai sau khi sửa: " + numbers[1]); // In ra 25
// Lấy độ dài của mảng qua thuộc tính .length
System.out.println("Độ dài của mảng là: " + numbers.length); // In ra 3
}
}Lưu ý quan trọng: Nếu bạn cố gắng truy xuất đến một chỉ số không tồn tại (ví dụ: chỉ số âm hoặc chỉ số lớn hơn hoặc bằng độ dài mảng như
numbers[3]đối với mảng có 3 phần tử), Java sẽ báo lỗiArrayIndexOutOfBoundsExceptionvà dừng chương trình.
4. Duyệt Mảng Bằng Vòng Lặp
Để thao tác với tất cả các phần tử trong mảng (như in danh sách, tính tổng, tìm giá trị lớn nhất), chúng ta sẽ kết hợp mảng với vòng lặp.
Sử dụng vòng lặp for cơ bản
Vòng lặp for giúp bạn dễ dàng truy cập phần tử thông qua biến đếm làm chỉ số:
int[] ages = {18, 20, 22, 25};
for (int i = 0; i < ages.length; i++) {
System.out.println("Phần tử tại vị trí " + i + " là: " + ages[i]);
}Sử dụng vòng lặp for-each
Nếu bạn chỉ muốn lấy giá trị của từng phần tử từ đầu đến cuối mà không cần quan tâm đến chỉ số i, vòng lặp for-each cung cấp cú pháp ngắn gọn hơn:
int[] ages = {18, 20, 22, 25};
for (int age : ages) {
System.out.println("Tuổi: " + age);
}5. Ví Dụ Thực Tế: Nhập Mảng Từ Bàn Phím Và Tính Tổng
Dưới đây là một chương trình hoàn chỉnh kết hợp lớp Scanner để nhập thông tin từ người dùng, lưu vào mảng và tính tổng các số đã nhập:
import java.util.Scanner;
public class ArrayExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Nhập số lượng phần tử của mảng: ");
int n = scanner.nextInt();
// Khởi tạo mảng số nguyên có n phần tử
int[] arr = new int[n];
// Nhập dữ liệu cho từng phần tử
System.out.println("Nhập các phần tử:");
for (int i = 0; i < n; i++) {
System.out.print("arr[" + i + "] = ");
arr[i] = scanner.nextInt();
}
// Tính tổng các phần tử trong mảng
int sum = 0;
for (int item : arr) {
sum += item;
}
System.out.println("Tổng các phần tử trong mảng là: " + sum);
}
}Kết Luận
Mảng một chiều là một trong những cấu trúc dữ liệu nền tảng nhất trong Java. Mặc dù có hạn chế là kích thước không thể thay đổi linh hoạt sau khi khởi tạo, việc nắm vững mảng giúp bạn hiểu rõ cách máy tính quản lý và truy xuất bộ nhớ, tạo tiền đề để làm việc với các cấu trúc dữ liệu nâng cao hơn sau này.
Nguồn tham khảo
- Array Java Series - 1 - Khai báo mảng trong Java
- Khai báo mảng trong java - học java cơ bản đến nâng cao - VietTuts
- Duyệt mảng trong java - VietTuts
- Mảng một chiều là gì? Cách khai báo và khởi tạo trong C++
- Mảng hai chiều là gì? Cách khai báo và khởi tạo trong C++
Nhận xét
Đăng nhận xét