Mảng là tập hợp nhiều phần tử có cùng tên, cùng kiểu dữ liệu và mỗi phần tử trong mảng được truy xuất thông qua chỉ số của nó trong mảng. Chúng ta sử dụng mảng trong trường hợp muốn lưu trữ nhiều biến tương tự nhau chẳng hạn như danh sách các sinh viên trong một lớp.
Cách khai báo mảng:
<kiểu dữ liệu> <tên mảng>[];
hoặc
<kiểu dữ liệu>[] <tên mảng>;
Ví dụ: String danhSachSinhVien[]; hoặc String[] danhSachSinhVien;
Khai báo cùng lúc nhiều mảng có kiểu dữ liệu giống nhau.
int[] mang1, mang2, mang3;
Khởi tạo mảng
Không giống như trong C, C++ kích thước mảng trong Java được xác định khi khai báo. Để cấp phát bộ nhớ hay nói cách khác là kích thước cho mảng trong Java chúng ta cần dùng từ khóa new. Chẳng hạn để cấp phát vùng nhớ cho mảng gồm 10 số thực trong Java chúng ta khai báo như sau:
double mangSoThuc = new double[10];
Chúng ta có thể khởi tạo giá trị ban đầu cho các phần tử của mảng khi nó được khai báo.
Ví dụ:
int mangSoNguyen[] = {1, 2, 3};
char mangKyTu[] = {‘i’, ‘j’, ‘k’};
String mangChuoi[] = {"Le Van Teo", "Nguyen Van Ti", "Tran Minh Beo"};
Truy cập mảng Chỉ số mảng trong Java bắt đầu tư 0. Vì vậy phần tử đầu tiên có chỉ số là 0, và phần tử thứ n có chỉ số là n-1. Các phần tử của mảng được truy xuất thông qua chỉ số của nó đặt giữa cặp dấu ngoặc vuông ([]).
Ví dụ:
int arrInt[] = {1, 2, 3};
int x = arrInt[0]; // x sẽ có giá trị là 1.
int y = arrInt[1]; // y sẽ có giá trị là 2.
int z = arrInt[2]; // z sẽ có giá trị là 3.
Lưu ý: Trong những ngôn ngữ lập trình khác (C chẳng hạn), một chuỗi được xem như một mảng các ký tự. Trong java thì khác, java cung cấp một lớp String để làm việc với đối tượng dữ liệu chuỗi cùng khác thao tác trên đối tượng dữ liệu này.
Để lấy chiều dài của mảng chúng ta sử dụng thuộc tính length.
Cú pháp: <ten mang>.length
Ví dụ:
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
System.out.println(numbers.length);
}
}
Mảng đa chiều
Khai báo mảng n chiều trong java
<Kiểu dữ liệu>[][]...[] <Tên mảng>;
hoặc
<Kiểu dữ liệu> <Tên mảng> [][]..[] gồm n []
Ví dụ:
int a[][];
int[][] a;
Khởi tạo mảng đa chiều:
<Kiểu dữ liệu> <Tên mảng>[][]...[]= new <Kiểu dữ liệu>[Số phần từ 1][Số phần tử 2].....[Số phần tử n]
Ví dụ:
Cấp phát phần tử cho mảng đa chiều
int a[][]={
{3,4},
{2,8},
};
hoặc
a[0][0]=3;
a[0][1]=4;
a[1][0]=2;
a[1][1]=8;
Một số ví dụ về mảng:
1. Tìm số lớn nhất và nhỏ nhất trong mảng:
public class FindLargestSmallestNumber
{
public static void main(String[] args)
{
//Mảng 6 chữ số
int numbers[] = new int[]{1, 5, 9.7, 3, 4};
//-- Tạo biến để lưu trữ giá trị nhỏ nhất và lớn nhất được tìm thấy.
int smallest = numbers[0];
int largetst = numbers[0];
for(int i=1; i< numbers.length; i++)
{
if(numbers[i] > largetst)
{
largetst = numbers[i];
}
else if (numbers[i] < smallest)
{
smallest = numbers[i];
}
}
System.out.println("So lon nhat trong mang la : " + largetst);
System.out.println("So nho nhat trong mang la : " + smallest);
}
}
2. Sắp xếp mảng
public class SortArray {
public static void main(String[] args) {
int[] array_a = {3, 1, 5, 7, 4};
for (int i = 0; i < array_a.length; i++) {
for (int j = 0; j <= i; j++) {
if (array_a[i] <= array_a[j]) {
temp = array_a[i];
array_a[i] = array_a[j];
array_a[j] = temp;
}
}
}
System.out.println("--------mang da duoc sap xep----------");
for (int i = 0; i < array_a.length; i++) {
System.out.print(array_a[i]);
}
}
}
Xem thêm một số bài về mảng:
Bài tập thực hành:
1. Nhập mảng và thực hiện các thao tác trên mảng.
2. Sắp xếp mảng tăng dần sử dụng phương pháp nổi bọt (Bubble sort).
3. Tìm kiếm một phần tử sử dụng trong mảng sử dụng thuật tìm kiếm nhị phân.
4. Kiểm tra mảng một chiều vừa nhập có phải là mảng đối xứng hay không?
5. Tìm và in ra màn hình số lượng số nguyên lẻ, số lượng số nguyên chẵn trong mảng.
6. Xóa phần tử có giá trị k trong mảng (k nhập từ bàn phím).
7. Nhập mảng và thực hiện tách các số chẵn và lẻ trong mảng sang hai mảng khác.
8. Tách một nửa đầu của mảng ban đầu sang mảng thứ nhất và nửa còn lại sang mảng thứ hai.
9. Viết chương trình hiển thị các phần tử chia hết cho 5 trong mảng.
10. Đếm số lần xuất hiện của 1 phần tử được nhập từ bàn phím.
11. Bài tập tổng hợp các thao tác trên mảng.
12. Viết chương trình nhập mảng sao cho không có phần tử nào trùng nhau.