Trong bài trước, Rikkei Academy đã cung cấp cho bạn cách khai báo mảng cơ bản nhất. Tuy nhiên, trong một số trường hợp, đó không phải là cách khai báo mảng một cách phù hợp và tối ưu nhất. Vì vậy, chúng ta hãy cùng tìm hiểu một số cách khác để khai báo mảng trong Java.
Các cách khai báo mảng trong Java
Mảng (array) là một cấu trúc dữ liệu cơ bản và được sử dụng rộng rãi trong lập trình. Khi lập trình Java, bạn sẽ cần sử dụng mảng để lưu trữ và xử lý các kiểu dữ liệu khác nhau. Vì vậy, việc biết cách khai báo mảng trong Java giúp bạn có thể sử dụng mảng đúng cách và tối ưu nhất. Đồng thời, tránh gặp phải các lỗi liên quan như truy cập sai chỉ số hay tràn bộ nhớ.
Khai báo mảng một chiều trong Java
Với mảng một chiều, ta có thể truy cập và sắp xếp dữ liệu theo chỉ số của từng phần tử trong mảng, giúp cho việc truy cập và xử lý dữ liệu trở nên thuận tiện hơn. Để khai báo một mảng một chiều trong Java, bạn có thể sử dụng cú pháp sau:
dataType[][] arrayName = new dataType[ArraySize]; |
Ví dụ:
int[] myArray = new int[5]; |
Mảng một chiều thường được sử dụng trong các tình huống để lưu trữ, xử lý như danh sách các phần tử (điểm số,tên sản phẩm,…); dữ liệu số học (dãy số, các giá trị thống kê,…); dữ liệu chuỗi,…
Khai báo mảng đa chiều trong Java
Trong Java, khai báo mảng đa chiều cho phép lưu trữ và truy cập các giá trị theo các chiều khác nhau, tạo ra một không gian lưu trữ lớn hơn so với khai báo mảng một chiều. Cách khai báo này cho phép bạn khai báo một mảng đa chiều bằng cách sử dụng hai hoặc nhiều cặp dấu ngoặc vuông.
Cú pháp:
dataType[][] arrayName = new dataType[rows][columns]; |
Ví dụ:
int[][] matrix = new int[3][3]; |
Mảng đa chiều trong Java được sử dụng rộng rãi trong các ứng dụng như xử lý ảnh, xử lý video, xử lý dữ liệu địa lý,…cũng như trong lập trình game và ứng dụng đồ họa.
Đây là hai cách khai báo dựa theo phân loại của mảng trong Java. Ngoài ra, chúng ta còn còn một số cách tạo mảng khác phù hợp với các trường hợp khác nhau. Lưu ý rằng, các cách sau có thể áp dụng cho cả mảng một chiều và đa chiều.
Khai báo mảng với giá trị khởi tạo trong Java
Cách khai báo này cho phép khai báo và khởi tạo mảng trong cùng một lần bằng cách liệt kê các giá trị cần lưu trữ trong mảng. Cú pháp:
dataType[] arrayName = {value1, value2, …, valueN}; |
Chúng ta sử dụng khai báo mảng với giá trị khởi tạo trong trường hợp số phần tử của mảng không cố định hoặc bạn đã biết trước giá trị các phần tử trong mảng.
Ví dụ:
int[] numbers = {1, 2, 3, 4, 5}; |
Lưu ý: khi tạo mảng với giá trị khởi tạo, số lượng phần tử của được xác định bởi số lượng giá trị khởi tạo của mảng. Do đó, không thể thêm hoặc xóa các phần tử sau khi đã khai báo.
Khai báo mảng với kích thước cố định trong Java
Trong cách khai báo này, ta cần chỉ định kích thước của mảng trước khi khởi tạo. Mảng được khởi tạo với kích thước cố định bằng từ khóa new và với một số nguyên biểu diễn cho số lượng phần tử trong mảng. Cú pháp:
dataType[] arrayName = new dataType[arraySize]; |
Ta thường sử dụng cách tạo mảng này khi đã biết trước số lượng phần tử cần lưu trữ trong mảng và không cần thêm hoặc xóa phần tử trong quá trình thực thi chương trình (số lượng phần tử không thay đổi).
Ví dụ:
int[] numbers = new int[10]; |
Khai báo mảng với các phần tử mặc định
Khi khai báo một mảng, mỗi phần tử trong mảng sẽ có giá trị mặc định tương ứng với kiểu dữ liệu của phần tử đó như giá trị mặc định của kiểu số nguyên là 0 hay số thực là 0.0. Cách khai báo này cho phép bạn khai báo một mảng với các phần tử mặc định cho kiểu dữ liệu tương ứng.
Ví dụ:
boolean[] values = new boolean[10]; |
Khi bạn muốn khai báo một mảng mới trong Java với các các giá trị ban đầu là giá trị mặc định của kiểu dữ liệu tương ứng và chưa cần gán giá trị cho các phần tử trong mảng (có thể gắn sau khi đã khởi tạo mảng)
Khai báo mảng với kích thước không cố định
Để khai báo mảng với kích thước không cố định, ta sử dụng một lớp ArrayList. Cú pháp:
ArrayList<dataType> arrayName = new ArrayList<dataType>(); |
Đây là một lựa chọn tốt khi bạn cần lưu trữ các phần tử trong một mảng mà không biết trước kích thước.
Ví dụ:
import java.util.ArrayList;
public class Main { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); } } |
Lưu ý: để sử dụng ArrayList, bạn cần cài đặt gói java.util.ArrayList với câu lệnh import java.util.ArrayList;
Khai báo mảng bằng cách sao chép mảng khác
Cách khai báo này cho phép bạn tạo một bản sao của một mảng hiện có bằng cách sao chép các giá trị của nó vào một mảng mới. Cú pháp:
dataType[] arrayName = Arrays.copyOf(originalArray, newLength); |
Sử dụng khai báo mảng bằng cách sao chép mảng khác khi bạn muốn tạo một bản sao của một mảng hiện có để thực hiện các thao tác khác nhau, không ảnh hưởng đến mảng gốc (mảng được sao chép).
Ví dụ:
public class Example {
public static void main(String[] args) { int[] numbers1 = {5, 6, 7, 8, 9}; int[] numbers2 = Arrays.copyOf(numbers1, numbers1.length); // mảng mới numbers2 với cùng các phần tử và kích thước với mảng numbers1 numbers2[0] = 10; //thay đổi phần tử ở vị trí 0 bằng giá trị 10 System.out.println(Arrays.toString(numbers1)); // [5, 6, 7, 8, 9] System.out.println(Arrays.toString(numbers2)); // [10,6, 7, 8, 9] } } |
Lưu ý: Khi mảng mới và mảng cũ đều trỏ đến cùng 1 đối tượng, thì ta có thể nói, mảng mới là tham chiếu của mảng cũ. Vì khi thay đổi các thuộc tính của đối tượng trong mảng mới, các thay đổi đó cũng sẽ ảnh hưởng đến các đối tượng trong mảng cũ. Ví dụ:
Student st = new Student(“John”);
Student[] arr1 = {st}; Student[] arr2 = Arrays.copyOf(arr1, 1); // Thay đổi tên sinh viên thông qua arr2 arr2[0].setName(“Peter”); // In ra arr1 để kiểm tra System.out.println(arr1[0].getName()); // Peter |
Khai báo mảng với các phần tử được nhập từ bàn phím
Để khai báo một mảng với các phần tử được nhập từ bàn phím trong Java, ta có thể sử dụng lớp Scanner để đọc dữ liệu từ bàn phím. Sau đó, ta có thể sử dụng vòng lặp để nhập giá trị cho từng phần tử trong mảng. Cú pháp:
Scanner scanner = new Scanner(System.in);
dataType[] arrayName = new dataType[arraySize]; for (int i = 0; i < arraySize; i++) { arrayName[i] = scanner.nextdataType(); } |
Cách khai báo mảng với các phần tử được nhập từ bàn phím (hoặc từ các nguồn dữ liệu khác) thường được sử dụng trong các tình huống khi các giá trị của các phần tử trong mảng không được biết trước.
Đây là cách tạo mảng trong Java hữu ích khi ta muốn tương tác với người dùng để lấy dữ liệu đầu vào cho chương trình của mình. Nghĩa là, người dùng có thể nhập các giá trị từ bàn phím một cách linh hoạt, cho phép chương trình hoạt động với các dữ liệu đầu vào khác nhau.
Ví dụ:
import java.util.Scanner;
public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số lượng phần tử của mảng: “); int n = scanner.nextInt(); int[] arr = new int[n]; System.out.println(“Nhập các phần tử của mảng:”); for (int i = 0; i < n; i++) { System.out.print(“Phần tử thứ ” + i + “: “); arr[i] = scanner.nextInt(); } System.out.println(“Các phần tử trong mảng là:”); for (int i = 0; i < n; i++) { System.out.println(arr[i]); } } } |
Kết luận
Có thể thấy, có nhiều cách khai báo mảng trong Java với các tính năng và ứng dụng riêng biệt để lưu trữ và xử lý dữ liệu. Việc lựa chọn cách khai báo mảng phù hợp sẽ phụ thuộc vào tình huống cụ thể. Vì vậy, việc hiểu rõ các cách khai báo mảng sẽ giúp tối ưu hiệu suất và tăng tính linh hoạt của chương trình trong quá trình thực hiện.
Nếu bạn đang tìm hiểu về Java, muốn theo học chương trình có lộ trình tinh gọn, giảng viên giàu kinh nghiệm, hỗ trợ 24/7 và cam kết việc việc làm 100%, tham khảo ngay khóa học lập trình tại Rikkei Academy! Với thời lượng học trong 6 tháng, bạn sẽ được trang bị đầy đủ kiến thức, kỹ năng bám sát thực tế. Từ đó tự tin ứng tuyển chạm tay tới mức lương 8 con số. Đăng ký để nhận tư vấn miễn phí ngay tại đây!