1. Mảng là gì?

Mảng là tập hợp các đối tượng có cùng kiểu dữ liệu và được lưu trữ gần nhau trong bộ nhớ. Mỗi đối tượng hay được gọi là phần tử, các phần từ được phân biệt bằng vị trí (hay chỉ số phần tử), được bắt đầu từ vị trí 0.

Việc sử dụng mảng mang ý nghĩa lưu những giá trị liên quan với nhau. Ví dụ như lưu điểm kiểm tra của 30 học sinh trong lớp, như vậy ta muốn lấy điểm của học sinh nào đó thì chỉ cần viết vị trí của học sinh đó trong danh sách.

* Ưu nhược của mảng

Ưu điểm:

Tối ưu code: Gom các phần tử liên quan vào chung một với nhau giúp code gọn gàng hơn.

Có thể truy cập ngấu nhiên: Do các vị trí ô lưu trữ liên tiếp ta có thể truy cập ngấu nhiên bằng chỉ số phần tử dễ dàng và nhanh chóng.

Dễ thao tác, quản lý và nâng cấp: Như muốn thay đổi các giá trị theo 1 quy luật thì ta sẽ tận dụng sử dụng những vòng lặp lập trình.

Nhược điểm:

Giới hạn kích thước: Khi sử dụng mảng ta phải khai báo kích thước lưu trữ của mảng và không thể thay đổi kích thước trong lúc chạy.

Vùng lưu trữ phải liên tiếp: Đây cũng là vừa ưu vừa nhược điểm. Vì yêu cầu các ô nhớ liên tiếp nên phải tốn không gian bộ nhớ, hoặc đủ ô nhớ nhớ nhưng các ô nhớ không tiếp nên không thể khai báo được.

Cấu trúc của mảng

Mảng có hai loại: Mảng một chiều và mảng đa chiều

Xét mảng 1 chiều:

2. Khai báo mảng

Cú pháp khai báo:

<kiểu dữ liệu> [] <tên mảng>;

Hoặc

<kiểu dữ liệu> <tên mảng>[];

Cú pháp cấp phát bộ nhớ để tạo mảng:

<tên mảng> = new <kiểu dữ liệu>[kích cỡ mảng];

Cú pháp rút gọn hơn:

<kiểu dữ liệu> [] <tên mảng> = new <kiểu dữ liệu>[kích cỡ mảng];

Cú pháp vừa khai báo vừa khởi tạo giá trị cho mảng qua cú pháp:

<kiểu dữ liệu> [] <tên mảng> = {<giá trị>,…}

Ví dụ: Khai báo mảng số nguyên gồm 10 phần tử

int [] a;

a= new int [10];

hoặc

int [] a= new int [10];

Khai báo và khởi tạo

int [] a={1,3,5,7,9};

3. Truy cập các phần tử của mảng

Cú pháp: <tên mảng>[chỉ số]

Ví dụ:

4. Nhập, xuất mảng 1 chiều

Ví dụ:                         Scanner sc= new Scanner(System.in);

int [] a= new int [10];

Nhập số phần tử mảng

int n = sc.nextInt();

Nhập giá trị từng phần tử mảng

for (int i=0; i<n; i++)

a[i] = sc.nextInt();

In ra giá trị từng phần tử mảng

for (int i=0; i<n; i++)

System.out.println(a[i]);

Lưu ý: Riêng kiểu dữ liệu char đặc biệt hơn là có thể in ra toàn bộ giá trị bằng cách sử dụng print trực tiếp mảng mà không cần dùng vòng lặp for.