Mảng trong Java là gì? Cách khai báo mảng trong Java | Laptrinhcanban.com

Mảng trong Java là gì? Cách khai báo mảng trong Java

Bạn có đang sử dụng mảng trong Java không? Mảng trong Java, hay còn gọi là kiểu mảng trong Java rất tiện lợi khi chúng ta cần xử lý một lượng lớn dữ liệu cùng loại. Hãy cùng tìm hiểu mảng trong Java là gì, mảng trong Java dùng để làm gì, cũng như cách khai báo mảng trong Java sau bài học này.

Mảng trong Java là gì

Mảng trong Java, hay còn gọi là kiểu mảng trong Java tập hợp các dữ liệu có cùng kiểu, và các dữ liệu chứa trong mảng được gọi là phần tử của mảng đó. Chúng ta không thể kết hợp các kiểu dữ liệu khác nhau trong cùng một mảng.

Mảng trong Java là gì

Mảng trong Java dùng để lưu trữ các dữ liệu có cùng kiểu dữ liệu. Bằng việc sử dụng mảng, chúng ta không cần phải khai báo các dữ liệu có cùng kiểu nhiều lần, qua đó có thể viết code đơn giản và ngắn gọn hơn.

Trong bài Các kiểu dữ liệu trong Java chúng ta đã biết có 2 kiểu dữ liệu lớn trong Java, đó là kiểu dữ liệu nguyên thủy với 8 kiểu con trong nó, và kiểu còn lại là kiểu dữ liệu đối tượng. Mảng trong Java thuộc kiểu dữ liệu đối tượng, và khác với các kiểu dữ liệu nguyên thủy thì dữ liệu lưu trữ trong biến chứa mảng không phải là bản thân mảng, mà là địa chỉ lưu trữ mảng trong bộ nhớ máy tính. Nói cụ thể hơn, thì trong biến sẽ lưu trữ địa chỉ phần tử đầu tiên của mảng trong bộ nhớ máy tính.

Mảng trong Java là gì

Mảng trong Java được chia ra làm 2 loại, đó là mảng 1 chiều và mảng đa chiều. Trong đó chúng ta hay sử dụng loại mảng đa chiều nhiều nhất đó chính là mảng 2 chiều trong Java.

Mảng 1 chiều và mảng 2 chiều trong Java

Mảng 1 chiều trong Java

Trong ngôn ngữ Java, mảng 1 chiều là kiểu mảng mà trong đó các phần tử được sắp xếp liên tục và có thứ tự trên bộ nhớ máy tính. Các phần tử trong mảng được đánh số thứ tự từ đầu mảng tới cuối mảng, bắt đầu từ số 0 và tăng dần 1 đơn vị. Chúng ta gọi số này là index (chỉ số) của phần tử, và mảng có n phần tử thì sẽ có index bắt đầu từ [0] tới [n – 1].

Ví dụ điển hình của mảng 1 chiều là một dãy số chỉ nhiệt độ hoặc điện áp được ghi lại theo thời gian.

Mảng 1 chiều là gì

Mỗi phần tử trong mảng 1 chiều sẽ được xác định thông qua index của nó. Ví dụ với mảng 1 chiều ở trên, phần tử [37.1] có index bằng 2, do đó nó được xác định thông qua index là [2].

Mảng 2 chiều trong java

Khác với mảng 1 chiều thì mảng 2 chiềukiểu mảng chứa các mảng khác bên trong nó. Phần tử của mảng 2 chiều không được lưu giữ trực tiếp trong mảng 2 chiều, mà được lưu giữ thông qua các mảng 1 chiều bên trong mảng 2 chiều đó. Do cấu tạo mảng như vậy nên chúng ta mới gọi các mảng trong mảng như thế này là mảng 2 chiều.

Mỗi phần tử trong mảng 2 chiều cần được xác định bởi một cặp index (chỉ số) là [index dọc][index ngang], trong đó [index dọc] để xác vị trí của mảng 1 chiều chứa nó trong mảng 2 chiều, và [index ngang] để xác định vị trí của nó trong mảng 1 chiều chứa nó.

Ví dụ điển hình của mảng 2 chiều là bảng điểm dưới đây. Bảng điểm có 2 hàng tương ứng với số điểm của từng người, và trong mỗi hàng lại có 3 cột tương ứng với số điểm của từng môn. Khi biểu diễn bảng điểm thành mảng, mỗi một hàng trong bảng sẽ trở thành một mảng 1 chiều, và mỗi mảng 1 một chiều sẽ chứa tối đa 3 phần tử tương ứng với điểm số của từng môn như sau:

Mảng 2 chiều là gì

Để truy cập tới từng ô điểm trong bảng điểm, chúng ta cần biết ô đó thuộc hàng thứ mấy, và cột thứ mấy. Và khi chuyển bảng điểm thành mảng thì một cách tương tự, để truy cập tới các phần tử trong mảng 2 chiều, chúng ta cần biết phần tử đó thuộc mảng 1 chiều thứ bao nhiêu (tính từ trên xuống dưới), và vị trí của nó trong mảng 1 chiều đó (tính từ trái qua phải). Các vị trí này cũng được đánh số thứ tự tương tự như mảng 1 chiều, luôn bắt đầu bằng 0 và tăng dần 1 đơn vị.

Ví dụ, phần tử [9] thuộc mảng 1 chiều đầu tiên (index dọc bằng 0) và đứng thứ 2 trong mảng 1 chiều chứa nó (index ngang bằng 1). Do vậy, nó được xác định bởi cặp index là [0][1].

Mảng 2 chiều thường được sử dụng để biểu diễn và tính toán ma trận trong Java. Ngoài ra, các dữ liệu như “hình ảnh” và “cơ sở dữ liệu” sử dụng trong chương trình Java đều là các dữ liệu được sắp xếp theo định dạng hai chiều, và chúng ta cũng cần phải sử dụng mảng 2 chiều để biểu diễn chúng.

Sự khác biệt giữa mảng 1 chiều và mảng 2 chiều trong Java

Mảng 1 chiều và mảng 2 chiều trong Java có một số điểm khác biệt như sau:

  1. Mảng 1 chiều có phần tử là các giá trị được sắp xếp theo thứ tự, trong khi đó mảng 2 chiều lại chứa các mảng 1 chiều.

  2. Để tương tác với phần tử trong mảng 1 chiều, chúng ta chỉ cần một index biểu diễn vị trí của phần tử đó trong mảng. Tuy nhiên với mảng 2 chiều thì chúng ta cần tới 2 index, một index dọc để biểu diễn vị trí của mảng 1 chiều chứa phần tử, và một index ngang để biểu diễn vị trí phần tử này trong mảng 1 chiều chứa nó.

  3. Khi khởi tạo mảng 1 chiều, chúng ta có thể lược bỏ index. Khi khởi tạo mảng 2 chiều, chúng ta cũng có thể lược bỏ index đầu tiên sử dụng để chỉ định số mảng 1 chiều trong mảng 2 chiều, nhưng phải chỉ định giá trị của index thứ 2 sử dụng để chỉ định độ dài của các mảng 1 chiều trong mảng.

Mặc dù có sự phân định rõ ràng giữa mảng 1 chiều và mảng 2 chiều trong Java, tuy nhiên do tần số sử dụng của mảng 2 chiều khá là ít so với mảng 1 chiều, nên thông thường chỉ khi nào cần sử dụng mảng 2 chiều thì chúng ta mới gọi rõ tên của loại mảng này, còn phần lớn trong các trường hợp, chúng ta hay coi mảng trong Java chính là mảng 1 chiều.

Trong chuyên đề Lập trình Java cơ bản dành cho người mới học lập trình này, trừ những trường hợp cần chỉ định rõ thì Kiyoshi cũng mạn phép coi mảng trong Java chính là mảng 1 chiều. Khi nói đến mảng trong Java mà không đề cập gì thêm, bạn hãy hiểu là chúng ta đang nói về mảng 1 chiều nhé.

Khai báo mảng trong Java

Để có thể sử dụng một mảng trong Java, chúng ta cần phải tạo nó. Khác với các ngôn ngữ lập trình khác khi chúng ta chỉ cần khai báo mảng là có thể sử dụng được mảng ngay, thì trong Java, quá trình tạo mảng trong Java lại phức tạp hơn.

Quá trình tạo mảng trong Java gồm 2 bước, một là khai báo mảng và hai là tạo bản thể của mảng, trong đó việc khai báo nhằm chỉ định tên và kiểu của mảng, còn việc tạo bản thể của mảng nhằm tạo ra chính mảng đó với số phần tử chỉ định.

Trước hết, chúng ta sẽ cùng tìm hiểu về khai báo mảng trong Java, hay nói chính xác là khai báo mảng 1 chiều trong java.

Có 2 cách khai báo mảng trong Java với 2 kiểu cú pháp khác nhau. Cách thứ nhất, chúng ta đặt kiểu dữ liệu trước tên mảng, sau đó là cặp dấu [], và cuối cùng là tên biến lưu trữ mảng như sau:

type[] array_name;

Trong đó type là kiểu dữ liệu, array_name là tên mảng. Lưu ý tên mảng cần tuân thủ theo quy tắc đặt tên mà Kiyoshi đã giới thiệu trong bài Đặt tên biến trong Java.

Ví dụ cụ thể:

int[] num1;
double[] num2;
boolean[] b;
String[] str;

Cách thứ hai, chúng ta sẽ đặt cặp dấu [] vào đằng sau tên biến lưu trữ mảng như sau:

type array_name[];

Ví dụ cụ thể:

int num1[];
double num2[];
boolean b[];
String str[];

Mặc dù cả hai cách trên đều có thể sử dụng để khai báo mảng trong Java, tuy nhiên trong cùng một chương trình, hoặc một dự án, để tạo ra sự thống nhất thì chúng ta nên quyết định sử dụng một trong 2 cách trên mà thôi.

Tạo mảng trong Java

Sau khi đã khai báo mảng, bước tiếp theo chính là tạo ra bản thế của mảng đó với số phần tử cụ thể.

Khác với biến chúng ta chỉ cần khai báo biến là có thể dùng để lưu trữ dữ liệu ngay, thì do một mảng trong Java bao gồm rất nhiều giá trị khác nhau, nên chúng ta cần phải thêm bước tạo mảng trong Java để chỉ định rõ số phần tử có trong mảng đó.

Cú pháp tạo mảng trong Java như sau:

array_name = new type[length];

Trong đó array_name là tên mảng đã khai báo trước đó, new là từ khóa dùng để tạo mới một mảng, type là kiểu dữ liệu của các giá trị gán vào mảng, và length chính là số phần tử có trong mảng cần tạo.

Ví dụ cụ thể, chúng ta khai báo một mảng kiểu int, sau đó tạo ra bản thể của nó với 5 phần tử như sau:

int[] num;
num = new int[5];

Sau khi đã tạo bản thể của mảng, giá trị mặc định (tùy thuộc vào kiểu dữ liệu) sẽ được gán vào các phần tử của mảng đã tạo. Ví dụ nếu mảng thuộc kiểu int thì giá trị mặc định là 0, nếu mảng thuộc kiểu String thì giá trị mặc định là null sẽ được gán vào tất cả các phần tử của mảng như giá trị ban đầu.

Trong trường hợp muốn gán các giá trị chỉ định thay vì dùng giá trị mặc định, chúng ta sẽ cần phải khởi tạo mảng trong Java với phương pháp cụ thể đã được Kiyoshi hướng dẫn trong bài Khởi tạo và gán giá trị mảng trong Java.

Khai báo và tạo mảng đồng thời trong Java

Ở hai phần trên chúng ta đã học cách khai báo mảng, sau đó thì tạo bản thể của nó với số phần tử cụ thể rồi.

Ngoài việc thực hiện từng phần riêng lẻ thì chúng ta cũng có thể tiến hành khai báo và tạo mảng đồng thời trong Java với cú pháp sau đây:

type[] array_name = new type[length];

Hoặc là:

type array_name[] = new type[length];

Ví dụ cụ thể, chúng ta tiến hành khai báo và tạo mảng kiểu int đồng thời với 5 phần tử như sau:

int[] num= new int[5];

int num1[] = new int[5];

Khi đó, một mảng int có 5 phần tử, với các phần tử đều mang giá trị mặc định bằng 0 sẽ được tạo ra.

Khai báo mảng trong Java bằng từ khóa var

Trong bài var trong Java và cách khai báo biến bằng kiểu suy luận chúng ta đã biết cách sử dụng var để tự động nhận dạng và rút gọn việc chỉ định kiểu dữ liệu khi khai báo một biến trong Java.

Một cách tương tự thì chúng ta cũng có thể sử dụng từ khóa var để tự động nhận dạng và rút gọn việc chỉ định kiểu dữ liệu khi khai báo một mảng trong Java.

Cú pháp sử dụng var để khai báo và tạo mảng trong Java như sau:

var array_name = new type[length];

Ví dụ cụ thể:

var data = new int[5];

Khi đó, một mảng int có 5 phần tử, với các phần tử đều mang giá trị mặc định bằng 0 sẽ được tạo ra.

Cách viết này tương đương với cách khai báo và tạo mảng thông thường sau đây:

int[] data = new int[5];

Tuy nhiên lưu ý với cách sử dụng var, chúng ta cần phải tiến hành khai báo và tạo bản thể của mảng đồng thời. Chúng ta không thể tách riêng từng quá trình, vì lỗi sẽ xảy ra khi compile như sau:

var num; //Error : cannot use 'var' on variable without initializer
num = new int[5];

Tổng kết

Trên đây Kiyoshi đã hướng dẫn các bạn về mảng trong Java là gì, cũng như cách khai báo và tạo mảng trong Java rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về Java trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.