NỘI DUNG BÀI VIẾT
1. Mảng là gì?
Trong Java, mảng (array) là một tập hợp các phần tử có cùng kiểu dữ liệu, có địa chỉ tiếp nhau trên bộ nhớ (memory). Mảng có số phần tử cố định và bạn không thể thay đổi kích thước của nó.
Các phần từ trong mảng được đánh số bắt đầu từ chỉ số 0, bạn có thể truy cập đến các phần tử của nó thông qua chỉ số. Ngoài các mảng 1 chiều, đôi khi bạn cũng phải làm việc với mảng 2 chiều hoặc nhiều chiều. Một mảng 2 chiều, các phần tử của nó sẽ được đánh hai chỉ số, chỉ số hàng và chỉ số cột.
2. Mảng một chiều
Cách khai báo
package com.company; public class Main { public static void main(String args[]) { // Khai báo một mảng, chưa chỉ rõ số phần tử. int[] arr1; // Khởi tạo mảng với 100 phần tử // Các phần tử chưa được gán giá trị cụ thể arr1 = new int[100]; // Khai báo một mảng, và chỉ rõ số phần tử // Các phần tử chưa được gán giá trị cụ thể int[] arr2 = new int[10]; // Khai báo một mảng với các phần tử được gán giá trị cụ thể. // Mảng này có 5 phần tử int[] arr3 = {10, 20, 30, 40, 50}; } }
Để gán giá trị cho từng phần tử trong mảng, ta có thể gán trực tiếp từng phần tử một, hoặc sử dụng vòng lặp. Tương tự việc truy nhập đến các phần tử trong màng cũng như vậy. Ví dụ:
package com.company; public class Main { public static void main(String args[]) { int[] arr = new int[5]; arr[0] = 10; arr[1] = 20; arr[2] = 30; arr[3] = 40; arr[4] = 50; for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
10 20 30 40 50
Một số phương thức thuận tiện khi sử dụng Array:
// Truyền vào các tham số cùng kiểu, và trả về một danh sách (List). public static <T> List<T> asList(T... a) // Kiểu X có thể là: byte, char, double, float, long, int, short, boolean ---------------------- // Tìm kiếm chỉ số của một giá trị xuất hiện trong mảng. // (Sử dụng thuật toán tìm kiếm nhị phân (binary search)) public static int binarySearch(X[] a, X key) // Copy các phần tử của một mảng để tạo ra một mảng mới với độ dài chỉ định. public static int[] copyOf(X[] original, X newLength) // Copy một phạm vi chỉ định các phần tử của mảng để tạo một mảng mới public static double[] copyOfRange(X[] original, int from, int to) // So sánh hai mảng public static boolean equals(X[] a, long[] a2) // Gán cùng một giá trị cho tất cả các phần tử của mảng. public static void fill(X[] a, X val) // Chuyển một mảng thành chuỗi (string) public static String toString(X[] a)
Ví dụ:
package com.company; import java.util.Arrays; import java.util.List; public class Main { public static void main(String args[]) { int[] years = new int[] { 1997, 1994, 1998}; // Sắp xếp Arrays.sort(years); for (int year : years) { System.out.println("Year: " + year); } // Chuyển một mảng thành chuỗi String yearsString = Arrays.toString(years); System.out.println("Years: " + yearsString); // Tạo danh sách (List) từ một vài giá trị. List<String> names = Arrays.asList("Huy", "Bien", "Nguyen"); for (String name : names) { System.out.println("Name: " + name); } } }
Year: 1994 Year: 1997 Year: 1998 Years: [1994, 1997, 1998] Name: Huy Name: Bien Name: Nguyen
3. Mảng hai chiều
Cách khai báo:
// Khai báo một mảng có 5 dòng, 10 cột MyType[][] myArray1 = new MyType[5][10]; // Khai báo một mảng 2 chiều có 5 dòng. // (Mảng của mảng) MyType[][] myArray2 = new MyType[5][]; // Khai báo một mảng 2 chiều, chỉ định giá trị các phần tử. MyType[][] myArray3 = new MyType[][] { { value00, value01, value02 , value03 }, { value10, value11, value12 } };
Nếu bạn khai báo một mảng của kiểu nguyên thủy ( byte, char, double, float, long, int, short, boolean), các phần tử không được chỉ định giá trị, chúng sẽ có giá trị mặc định
- Giá trị mặc định 0 ứng với các kiểu byte, double, float, long, int, short.
- Giá trị mặc định false ứng với kiểu boolean.
- Giá trị mặc định ‘\u0000’ (Ký tự null) ứng với kiểu char.
Ngược lại, nếu bạn khai báo một mảng của kiểu tham chiếu, nếu một phần tử của mảng không được chỉ định giá trị, nó sẽ có giá trị mặc định là null.Ví dụ:
package com.company; import java.util.Arrays; import java.util.List; public class Main { public static void main(String args[]) { // Các phần tử có giá trị mặc định int[][] myArray = new int[2][3]; // Số dòng của mảng 2 chiều. System.out.println("Length of myArray: " + myArray.length); // ==> 2 // Print out for (int row = 0; row < 2; row++) { for (int col = 0; col < 3; col++) { System.out.println("myArray[" + row + "," + col + "]=" + myArray[row][col]); } } System.out.println(" --- "); // Gán các giá trị cho các phần tử. for (int row = 0; row < 2; row++) { for (int col = 0; col < 3; col++) { myArray[row][col] = (row + 1) * (col + 1); } } // Print out for (int row = 0; row < 2; row++) { for (int col = 0; col < 3; col++) { System.out.println("myArray[" + row + "," + col + "]=" + myArray[row][col]); } } } }
Length of myArray: 2 myArray[0,0]=0 myArray[0,1]=0 myArray[0,2]=0 myArray[1,0]=0 myArray[1,1]=0 myArray[1,2]=0 --- myArray[0,0]=1 myArray[0,1]=2 myArray[0,2]=3 myArray[1,0]=2 myArray[1,1]=4 myArray[1,2]=6
Tham khảo khóa học lập trình web 6 tháng, đảm bảo 100% công việc đầu ra!