Mảng trong Java - Kiến thức cơ bản cho người mới

Java là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới. Ngôn ngữ lập trình này đóng vai trò thiết yếu trong bộ công cụ của bất kỳ chuyên gia phát triển ứng dụng và web nào.  Trong bài viết này, chúng ta sẽ nói về mảng trong Java. Mảng là một khái niệm đơn giản nhưng thiết yếu của lập trình Java. Chắc chắn rằng bạn sẽ sử dụng mảng trong hầu hết mọi khía cạnh của lập trình Java. 

Mục lục

Mảng trong Java là gì?

mảng trong java là gì

Mảng (Array) trong Java là một cấu trúc dữ liệu được sử dụng để lưu trữ một tập hợp các phần tử có cùng kiểu dữ liệu, và tất cả các phần tử này được lưu trữ trong các vị trí liên tiếp nhau trong bộ nhớ. Mảng có một kích thước cố định, tức là khi đã được tạo ra, số lượng phần tử không thể thay đổi. Hãy cùng xem xét một ví dụ:

Ví dụ về phần tử trong Mảng (Array):

50 14 77 38 22 31 60

Ví dụ về chỉ số trong Mảng (Array):

0 1 2 3 4 5 6

Đây là một mảng gồm bảy phần tử. Tất cả các phần tử đều là số nguyên và đồng nhất. Bảng bên dưới mảng được gọi là chỉ số, luôn bắt đầu từ số không và tăng lên đến n-1 phần tử. Trong trường hợp này, vì có bảy phần tử, chỉ số từ số không đến sáu.

Đặc điểm của Mảng trong Java

Mảng (Array) trong Java có một số đặc điểm chính sau:

Cố định kích thước

Kích thước của mảng phải được xác định khi mảng được tạo ra. Sau khi mảng đã được khởi tạo, kích thước của nó không thể thay đổi. Điều này có nghĩa là nếu bạn cần thêm phần tử sau khi đã khởi tạo, bạn phải tạo một mảng mới có kích thước lớn hơn.

int[] arr = new int[5];

→ Mảng có kích thước cố định là 5

Lưu trữ các phần tử cùng kiểu dữ liệu

Mảng chỉ có thể lưu trữ các phần tử có cùng kiểu dữ liệu, như int, float, String, hoặc kiểu đối tượng. Điều này đảm bảo tính nhất quán trong quá trình xử lý dữ liệu.

int[] numbers = {1, 2, 3};

→ Mảng chứa các giá trị kiểu int

String[] names = {"Alice", "Bob"};

→ Mảng chứa các chuỗi String

Chỉ số bắt đầu từ 0

Chỉ số (index) của mảng trong Java bắt đầu từ 0. Điều này có nghĩa là phần tử đầu tiên có chỉ số là 0, phần tử thứ hai là 1, và cứ thế tăng dần cho đến phần tử cuối cùng.

int firstElement = arr[0];

→ Truy cập phần tử đầu tiên của mảng

Truy cập ngẫu nhiên

Bạn có thể truy cập trực tiếp bất kỳ phần tử nào trong mảng bằng cách sử dụng chỉ số của nó. Việc truy cập phần tử trong mảng rất nhanh chóng và có độ phức tạp O(1).

int value = arr[2];

→ Truy cập phần tử thứ 3 của mảng

Thuộc tính length để lấy kích thước của mảng

Java cung cấp thuộc tính length để truy cập kích thước của mảng, cho phép bạn biết số lượng phần tử mà mảng có.

int length = arr.length;

→ Lấy kích thước của mảng

Mảng là đối tượng trong Java

Trong Java, mảng được coi là một đối tượng, và nó được cấp phát bộ nhớ trong heap. Điều này cũng có nghĩa là bạn có thể sử dụng các phương thức và thuộc tính của đối tượng như length.

Hỗ trợ mảng nhiều chiều

Java cho phép tạo ra các mảng nhiều chiều (mảng 2 chiều, 3 chiều, v.v.). Phổ biến nhất là mảng 2 chiều, thường được dùng để biểu diễn bảng hay ma trận.

int[][] matrix = new int[3][3];

→ Mảng 2 chiều 3x3

Có thể chứa các kiểu dữ liệu nguyên thủy và kiểu đối tượng

Mảng trong Java có thể chứa các kiểu dữ liệu nguyên thủy như int, char, float, cũng như các đối tượng như String, Object, hoặc các đối tượng tùy chỉnh khác.

Hiệu quả trong truy cập và thao tác

Mảng cho phép truy cập ngẫu nhiên vào các phần tử, giúp tiết kiệm thời gian khi cần truy cập phần tử dựa trên chỉ số. Tuy nhiên, do kích thước cố định và thiếu các chức năng thao tác linh hoạt như thêm, xóa phần tử (điều này đòi hỏi các cấu trúc dữ liệu khác như ArrayList), mảng có thể không phù hợp với mọi trường hợp.

Ưu điểm và Nhược điểm của Mảng trong Java

ưu điểm và nhược điểm của mảng trong java

Mảng là một cấu trúc dữ liệu cơ bản và hữu ích trong lập trình Java, nhưng cũng có những ưu và nhược điểm riêng.

Ưu điểm của Mảng trong Java

  • Truy cập nhanh: Bạn có thể truy cập trực tiếp đến bất kỳ phần tử nào trong mảng bằng chỉ số của nó, giúp tăng tốc độ thực thi chương trình.
  • Sử dụng hiệu quả bộ nhớ: Các phần tử trong mảng được lưu trữ liên tiếp trong bộ nhớ, tận dụng tối đa không gian.
  • Đơn giản: Cú pháp sử dụng mảng khá đơn giản và dễ hiểu.
  • Đa dạng: Mảng có thể chứa các kiểu dữ liệu khác nhau, từ kiểu nguyên thủy (int, double) đến kiểu đối tượng (String, các đối tượng tự định nghĩa).

Nhược điểm của Mảng trong Java

  • Kích thước cố định: Khi khai báo mảng, bạn phải xác định trước kích thước của nó. Nếu muốn thay đổi kích thước, bạn phải tạo một mảng mới và sao chép dữ liệu từ mảng cũ sang.
  • Kiểu dữ liệu đồng nhất: Tất cả các phần tử trong mảng phải có cùng một kiểu dữ liệu.
  • Nguy cơ tràn bộ nhớ: Nếu bạn cố gắng truy cập vào một phần tử ngoài phạm vi của mảng, sẽ gây ra lỗi ArrayIndexOutOfBoundsException.
  • Không linh hoạt: Mảng không tự động điều chỉnh kích thước khi thêm hoặc xóa phần tử.

Các loại mảng trong Java

Có ba loại mảng trong Java. Đó là:

Mảng một chiều

Mảng một chiều trong Java là một cấu trúc dữ liệu cơ bản dùng để lưu trữ một tập hợp các phần tử cùng kiểu dữ liệu theo một thứ tự tuyến tính. Mỗi phần tử trong mảng được xác định bởi một chỉ số duy nhất, bắt đầu từ 0.

Mảng hai chiều

Mảng hai chiều trong Java thực chất là một mảng của các mảng. Nó được sử dụng để biểu diễn dữ liệu có cấu trúc hai chiều, giống như một bảng với các hàng và cột. Mỗi phần tử trong mảng hai chiều được xác định bởi hai chỉ số: chỉ số hàng và chỉ số cột.

Ứng dụng của mảng hai chiều

  • Biểu diễn ma trận: Các phép toán trên ma trận như cộng, trừ, nhân ma trận.
  • Lưu trữ bảng dữ liệu: Ví dụ: bảng điểm của học sinh, bảng giá sản phẩm.
  • Xử lý hình ảnh: Hình ảnh kỹ thuật số có thể được biểu diễn dưới dạng một mảng hai chiều, mỗi phần tử đại diện cho một pixel.
  • Các thuật toán: Nhiều thuật toán sử dụng mảng hai chiều như thuật toán tìm đường đi ngắn nhất, thuật toán sắp xếp, ...

Mảng đa chiều

Đây là sự kết hợp của hai hoặc nhiều mảng hoặc mảng lồng nhau . Chúng ta thậm chí có thể sử dụng nhiều hơn hai hàng và cột bằng cách sử dụng mã sau: 

Mảng đa chiều trong Java là một cấu trúc dữ liệu mở rộng từ mảng một chiều, cho phép bạn lưu trữ dữ liệu theo nhiều chiều. Nói cách khác, một mảng đa chiều là một mảng của các mảng. Điều này rất hữu ích khi bạn cần biểu diễn dữ liệu có cấu trúc phức tạp hơn, như ma trận, bảng dữ liệu,...

Khai báo một mảng trong Java

Đây là hai cách để bạn khai báo một mảng trong Java. 

  • kiểu dữ liệu [] tên mảng;
  • dataType arrayName[];

dataType - Kiểu dữ liệu của các phần tử trong mảng (ví dụ: int, float, String,...).

arrayName - tên mảng.

Độ dài của mảng trong Java

Độ dài của mảng trong Java là số lượng phần tử mà mảng có thể chứa. Một khi mảng đã được khởi tạo, độ dài của nó sẽ không thể thay đổi.

Để xác định độ dài của một mảng trong Java, chúng ta sử dụng thuộc tính length.

Ứng dụng của độ dài mảng

  • Duyệt mảng: Sử dụng length để xác định số lần lặp trong vòng lặp khi duyệt qua các phần tử của mảng.
  • Kiểm tra điều kiện: Kiểm tra xem chỉ số có vượt quá giới hạn của mảng hay không để tránh lỗi ArrayIndexOutOfBoundsException.
  • Các thuật toán: Nhiều thuật toán trên mảng sử dụng length để tính toán kích thước dữ liệu và điều khiển vòng lặp.

Tại sao độ dài mảng không thể thay đổi?

  • Hiệu suất: Nếu độ dài mảng có thể thay đổi, máy tính sẽ phải phân bổ lại bộ nhớ mỗi khi thay đổi kích thước, điều này sẽ làm giảm hiệu suất của chương trình.
  • Đơn giản hóa: Việc giữ cho độ dài mảng không đổi giúp cho việc quản lý và sử dụng mảng trở nên đơn giản hơn.

Truy cập phần tử trong mảng

Trong Java, mỗi phần tử trong mảng được xác định bởi một chỉ số (index) duy nhất. Chỉ số này bắt đầu từ 0. Ví dụ, trong một mảng có 5 phần tử, chỉ số của các phần tử sẽ lần lượt là 0, 1, 2, 3, 4.

Để truy cập một phần tử cụ thể trong mảng, bạn sử dụng tên của mảng, theo sau là chỉ số của phần tử đó đặt trong dấu ngoặc vuông.

tên_mảng[chỉ_số];

Thay đổi giá trị của phần tử trong mảng

Trong Java, để thay đổi giá trị của một phần tử trong mảng, bạn chỉ cần truy cập phần tử đó thông qua chỉ số (index) của nó và gán giá trị mới. Mảng trong Java có chỉ số bắt đầu từ 0, vì vậy phần tử đầu tiên có chỉ số là 0, phần tử thứ hai là 1, và tiếp tục như vậy.

tên_mảng[chỉ_số] = giá_trị_mới;

Ví dụ:

numbers[2] = 100;

Phần tử thứ ba (chỉ số 2) của mảng được thay đổi thành 100.

Kết luận

Hiểu rõ về mảng là bước đầu tiên để bạn có thể làm việc với các cấu trúc dữ liệu phức tạp hơn như danh sách (list), hàng đợi (queue), stack,... trong lập trình Java. Mảng cũng là nền tảng cho việc xây dựng các thuật toán tìm kiếm, sắp xếp và giải quyết nhiều bài toán khác. Sau khi đọc bài viết này, bạn sẽ hiểu được những điều cơ bản về mảng trong Java.

Bài viết liên quan

Mảng trong Java - Kiến thức cơ bản cho người mới
Java là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới. Ngôn ngữ lập trình này đóng vai trò thiết yếu trong bộ công cụ của bất kỳ chuyên gia phát triển ứng dụng và web nào.  Trong bài viết này, chúng ta sẽ nói về mảng trong Java. Mảng là một khái niệm đơn giản nhưng thiết yếu của lập trình Java. Chắc chắn rằng bạn sẽ sử dụng mảng trong hầu hết mọi khía cạnh của lập trình Java. 
Spring Boot là gì? Những tính năng cơ bản và Lợi ích
Trong những ngày đầu phát triển ứng dụng bằng Java, người ta biết rằng quá trình cấu hình môi trường phát triển là một giai đoạn phức tạp, nhàm chán và tốn thời gian.
Các kiểu dữ liệu trong C (Data type) người dùng cần biết
C là một ngôn ngữ lập trình mạnh mẽ và phổ biến để phát triển hệ điều hành, cơ sở dữ liệu... Đây cũng là một ngôn ngữ tuyệt vời để một người mới bắt đầu học tập. Trong vô vàn kiến thức, bạn sẽ cần phải hiểu rõ về các kiểu dữ liệu của C để có thể làm việc với ngôn ngữ lập trình này. Vì vậy, những kiến thức về sau có thể giúp bạn biết kiểu dữ liệu nào cần cũng như những thao tác nào có thể được thực hiện.
9