× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Mảng trong Java - Tìm hiểu về mảng cho người mới bắt đầu

23/04/2021 02:46

Mảng trong Java là kiểu dữ liệu quen thuộc và thường dùng mà lập trình viên nhất định phải biết nếu muốn làm việc với ngôn ngữ này. Trong bài viết dưới đây, chúng ta sẽ tìm hiểu về mảng cùng các kiểu mảng trong Java. 

Khái niệm mảng (Array) trong Java

Mảng trong Java là một trong những cấu trúc dữ liệu trong Java, là một tập hợp các biến cùng kiểu được tham chiếu bằng một tên chung. Mảng bao gồm các vị trí bộ nhớ liền nhau. Địa chỉ đầu tiên của mảng thuộc về phần tử đầu tiên và địa chỉ cuối cùng thuộc về phần tử cuối cùng của mảng.

Khái niệm mảng (Array) trong Java

Khái niệm mảng (Array) trong Java

Một số điểm cần lưu ý của mảng trong Java:

  • Mảng có thể có các mục dữ liệu thuộc các kiểu đơn giản như int hoặc float, hoặc thậm chí là các kiểu dữ liệu do người dùng xác định như cấu trúc và đối tượng.
  • Kiểu dữ liệu chung của các phần tử mảng được gọi là kiểu cơ sở của mảng.
  • Mảng được coi là đối tượng trong Java.
  • Việc lập chỉ mục của biến trong một mảng bắt đầu từ 0.
  • Giống như các biến khác trong Java, một mảng phải được xác định trước khi nó có thể được sử dụng để lưu trữ thông tin.
  • Mảng trong Java được lưu trữ dưới dạng phân bổ động trong vùng đống.
  • Chúng ta có thể tìm độ dài của mảng bằng cách sử dụng 'length'.
  • Kích thước của mảng phải là giá trị int.
  • Lớp đối tượng là một lớp cha của Mảng.
  • Mảng thực hiện hai giao diện: Serializable và Cloneable.

Các loại mảng trong Java

 Mảng một chiều trong Java - bao gồm các phần tử thuần nhất hữu hạn.

Dạng đơn giản nhất của  mảng trong Java là mảng một chiều. Mảng này có các yếu tố trong một chiều duy nhất, ví dụ như một biến, phương thức và lớp, chúng ta có thể đặt tên cho mảng. 

Để khai báo mảng một chiều ta sử dụng cú pháp sau:

data-type array_name [ ];

data-type [ ] array_name;

Ví dụ:

int daysInMonth [ ];

char [ ] lettersInSentence;

double salaryOfEmployees [ ];

String progLanguages[ ];

 

Cú pháp của mảng trong Java

array_name = new data-type [size of array];

array_name = new data-type {elements of array using commas};

Ví dụ:

daysInMonth = new int [100];

lettersInSentence = new char[5];

salaryOfEmployees = new double[ ] {10000, 50000, 30000, 25000 };

progLanguages = { “C”, “Java”, “Ruby”, “Python”, “PHP” };

 

Biểu đồ dưới đây cho thấy hình minh họa của mảng một chiều:

Mảng một chiều trong Java

Mảng một chiều trong Java

Truy cập hoặc sử dụng mảng một chiều trong Java

Một phần tử mảng có thể được truy cập hoặc sử dụng một biến thông thường cùng kiểu. Một phần tử mảng được định địa chỉ hoặc tham chiếu bằng cách sử dụng tên mảng theo sau là chỉ số hoặc số nguyên trong dấu ngoặc vuông [].

Ví dụ, myArray[2]; sẽ cung cấp cho chúng ta phần tử thứ ba của mảng myArray.

Chúng ta có thể truy cập từng phần tử của mảng bằng cách sử dụng Java for loop.

Ví dụ:

// accessing all elements of the specified array

for (int i = 0; i < myArray.length; i++)

   System.out.println("Element at index " + i + " : "+ myArray[ i ]);

>>> Tham khảo: Khóa học lập trình Java

 Mảng đa chiều trong Java - bao gồm các phần tử, mỗi phần tử tự nó là một mảng.

Mảng đơn giản nhất của mảng đa chiều là mảng hai chiều. Tuy nhiên, Java cho phép các mảng có nhiều hơn hai chiều. Trình biên dịch bạn sử dụng có thể xác định giới hạn chính xác của kích thước. 

Mảng đa chiều là mảng của mảng trong đó mỗi phần tử của mảng giữ tham chiếu của các mảng khác. Chúng ta cũng có thể gọi chúng là Mảng răng cưa (Jagged Array). Mảng phổ biến nhất của mảng đa chiều là mảng hai chiều. Mảng hai chiều là mảng trong một mảng mà mỗi phần tử lại là một mảng một chiều.

Sơ đồ dưới đây minh họa một mảng đa chiều:

Cú pháp khai báo mảng hai chiều trong Java:

type array-name [ ][ ]= new type[number of rows] [number of columns];

 

hoặc 

type [ ][ ] array-name = new type[number of rows] [number of columns];

 

Ví dụ:

int myArray [ ] [ ] = new int [5] [12] ;

hoặc

int[ ] [ ] myArray = new int[5] [12] ;

 

>>> Đọc thêm: Package trong Java - Giải mã các thông tin về Package trong Java

Nhân bản mảng trong Java

Có hai loại sao chép mảng trong Java

Nhân bản mảng một chiều trong Java

Nhân bản mảng một chiều như Object [], có nghĩa là thực hiện thao tác “sao chép sâu” trong đó một mảng mới được tạo, chứa các bản sao của các phần tử của mảng ban đầu. Chúng ta có thể thực hiện sao chép các mảng trong Java với sự trợ giúp của phương thức clone():

Nhân bản mảng là cần thiết khi chúng ta muốn tạo một đối tượng có trạng thái tương tự như đối tượng ban đầu. Tóm lại với sự trợ giúp của việc sao chép mảng một chiều, chúng ta có thể tạo bản sao của đối tượng gốc.

Nhân bản mảng đa chiều trong Java

Nhân bản mảng đa chiều như Object[], có nghĩa là thực hiện thao tác “sao chép nông”. Nó sẽ chỉ tạo một mảng đơn mới với mỗi phần tử của mảng là một tham chiếu đến một phần tử của mảng ban đầu. Trong nhân bản của mảng nhiều chiều, các mảng con được chia sẻ, tức là chúng không được nhân bản.

>>> Tham khảo: Regex trong Java - Tìm hiểu nhanh về biểu thức chính quy trong Java

Lớp mảng trong Java

Gói java.util.Arrays chứa lớp Mảng để thực hiện các thao tác trên Mảng. Nó cung cấp nhiều phương thức tĩnh hữu ích trong việc thao tác và phân tích các mảng cũng như nhận được các kết quả hữu ích từ chúng. Với các phương thức này, chúng ta có thể thực hiện việc tìm kiếm, sắp xếp các phần tử của mảng, điền vào một mảng với một giá trị cụ thể, so sánh các mảng, v.v. Chúng ta sẽ thảo luận một số phương thức quan trọng của lớp Java Arrays ngay dưới đây.

Các phương thức của lớp mảng trong Java

int compare(array1, array2)

Phương thức so sánh hai mảng theo thứ tự từ điển. Chúng ta sẽ truyền hai mảng làm tham số cho các phương thức của nó. Nó trả về kết quả là 1 nếu  array 1 lớn hơn array2, -1 nếu array1 nhỏ hơn array2, và trả về kết quả 0 nếu hai mảng bằng nhau.

void fill(originalArray, value)

Phương thức này được sử dụng để điền giá trị cụ thể cho từng phần tử của mảng được chỉ định với một kiểu cụ thể. Phương thức này cũng có thể được sử dụng với tất cả các kiểu dữ liệu nguyên thủy khác như byte, short, int,..

boolean equals(array1, array2)

Phương thức này kiểm tra xem liệu cả hai mảng có bằng nhau hay không và đưa kết quả là true hoặc false.

int binarySearch(array [], value)

Với sự hỗ trợ của phương thức này, chúng ta có thể tìm một giá trị cụ thể trong một mảng được cho làm đối số đầu tiên. Kết quả là phương thức này trả về chỉ số của phần tử trong mảng. Mảng cần phải được sắp xếp cho việc tìm kiếm này. Nếu không tìm thấy phần tử nó sẽ trả về giá trị âm.

copyOf(originalArray, newLength)

Chúng ta có thể sao chép mảng cụ thể tới một mảng mới với độ dài cụ thể. Khoảng không gian bên trái được chỉ định cho các giá trị mặc định trong mảng mới.

Kết luận: Mảng là một yếu tố quan trọng mà chúng ta lưu trữ nhiều giá trị cùng kiểu. Chúng tiết kiệm thời gian và bộ nhớ cần thiết để lưu trữ một lượng lớn dữ liệu. Trong hướng dẫn này, chúng ta tìm hiểu từng khía cạnh của Mảng Java. 

Chúng ta đã tìm hiểu hai loại mảng với khai báo và khởi tạo của chúng cũng như học cách truy cập một mảng và cả cách truyền một mảng cho một phương thức. Sau khi đọc bài viết này, hy vọng bạn có thể hiểu rõ hơn về mảng trong Java. Tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình tại Viện công nghệ thông tin T3H bạn nhé!

Nguồn tham khảo: techvidvan