Bài 18: Mảng (Array) trong Java - Lập trình Java cơ bản

Đăng bởi: Admin | Lượt xem: 4674 | Chuyên mục: Java


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
  1. Giá trị mặc định 0 ứng với các kiểu byte, double, float, long, int, short.
  2. Giá trị mặc định false ứng với kiểu boolean.
  3. 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
Bài tiếp theo: Package trong Java >>
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!