Mảng (array) trong Java

Mảng trong Java là một đối tượng người tiêu dùng chứa những thành phần có kiểu tài liệu giống nhau. Mảng là một cấu trúc tài liệu nơi tàng trữ những thành phần giống nhau. Với mảng trong java tất cả chúng ta chỉ hoàn toàn có thể tàng trữ một tập những thành phần có số lượng thành phần cố định và thắt chặt .

Mảng trong Java

Thông thường, mảng ( array ) là một tập hợp những thành phần có cùng kiểu được tàng trữ gần nhau trong bộ nhớ. Mảng trong java lưu những thành phần theo chỉ số, chỉ số của thành phần tiên phong là 0 .
Dưới đây là hình ảnh miêu tả một mảng một chiều, tất cả chúng ta sẽ khám phá kỹ ở phần dưới nhé .

image

Bạn đang đọc: Mảng (array) trong Java

Mảng 1 chiều trong Java

Khai báo

Cú pháp khai báo :

  • Kiểu_dữ_liệu tên_mảng[];: Khai báo một con trỏ mảng
  • Kiểu_dữ_liệu []tên_mảng;: tương tự như trên
  • Kiểu_dữ_liệu tên_mảng[] = new Kiểu_dữ_liệu[Số_lượng_phần_tử];: Tạo ra một mảng có spt phần tử

Trong cú pháp trên thì :

  • Kiểu dữ liệu gồm: kiểu nguyên thủy, kiểu đối tượng… nó xác định kiểu dữ liệu của từng phần tử của mảng.
  • Số phần tử là số lượng phần tử của mảng và là một số nguyên
  • Mảng trong Java là một đối tượng
  • Cũng như các đối tượng khác, mảng phải được tạo ra bằng toán tử `new` như sau: Tên_mảng = new Kiểu_dữ_liệu[spt];
  • Khi mảng được tạo ra thì mỗi phần tử của mảng sẽ nhận một giá trị mặc định, quy tắc khởi tạo giá trị cho các phần tử của mảng cũng chính là quy tắc khởi đầu giá trị cho các thuộc tính của đối tượng, tức là mỗi phần tử của mảng sẽ nhận giá trị: (0 – đối với kiểu number, ‘\0’ – đối với kiểu dữ liệu là ký tự, false – đối với kiểu dữ liệu boolean, null – nếu kiểu dữ liệu là một lớp nào đó)

Khai báo một mảng số nguyên gồm 100 thành phần

 
int mangInt[];  
mangInt = new int[100];  

 
int mangInt[]=new int[100];

Giả sử ta có lớp SinhVien đã đươc định nghĩa, hãy khai báo một mảng gồm 100 đối tượng người dùng của lớp SinhVien

SinhVien arraySinhVien[] = new SinhVien[100];

Lúc này mỗi thành phần của mảng arraySinhVien là một con trỏ của lớp SinhVien và hiện giờ mỗi thành phần của mảng đang trỏ đến giá trị null. Để khởi tạo từng thành phần của mảng ta phải làm như sau :

arraySinhVien[0]=new SinhVien(" sv01 ", " Nguyễn Văn An ", " Hưng Yên ");
arraySinhVien[1]=new SinhVien(" sv02 ", " Nguyễn Thị Bình ", " Bắc Giang ");
….
arraySinhVien[99]=new SinhVien(" sv100 ", " Đào Thị Mến ", " Hà Nam ");

Ngoài cách khai báo trên Java còn được cho phép ta phối hợp cả khai báo và khởi gán những thành phần của mảng theo cách sau : tạo ra một mảng gồm 5 thành phần, những thành phần của mảng lần lượt được gán những giá trị là : 1, 3, 5, 7, 9

 
int[] mangInt = {1, 3, 5, 7, 9};

 
SinhVien[] mangSinhVien = {
  new   SinhVien(" sv01 ",    " Nguyễn Văn A ", " HY "),
  new SinhVien(" sv02 ", " Nguyễn Thị B ", " HN "), new SinhVien(" sv03 ", " Đỗ Thị Q ", " BG "),
  null
};

Khai báo một mảng gồm 4 thành phần, giá trị của những thành phần lần lượt được khởi gán như sau :

mangSinhVien [0]=new SinhVien(" sv01 ", " Nguyễn Văn A ", " HY ")
mangSinhVien [1]=new SinhVien(" sv02 ", " Nguyễn Thị B ", " HN ")
mangSinhVien [2]=new SinhVien(" sv03 ", " Đỗ Thị Q ", " BG ")
mangSinhVien [3]=null

Truy xất đến các phần tử của mảng một chiều

Để truy xuất đến thành phần thứ ind của mảng ta sử dụng cú pháp như sau :

Tên_mảng[Vị_trí_của_phần tử]

Phần tử tiên phong của mảng có chỉ số là 0

int a[] = new int [3];  

Lúc này những thành phần của mảng lần lượt được truy xuất như sau :

  • Phần tử đầu tiên của mảng là a[0]
  • Phần tử thứ 2 của mảng là a[1]
  • Phần tử thứ 3 đồng thời là phần tử cuối cùng của mảng là a[2]

Truy cập những thành phần của một mảng trong Java

public class Thaycacac {
    public static void main(String[] args) {
        String[] cars = { " Honda ", " BMW ", " Ford ", " Mazda " };
        System.out.println(cars[0]);
    }
}

Honda

Thay đổi một phần tử mảng trong Java

Để biến hóa giá trị của một thành phần đơn cử, hãy gán lại giá trị dựa vào vị trí của thành phần trong mảng

public class TruyCapArray2 {
    public static void main(String[] args) {
        String[] cars = { " Honda ", " BMW ", " Ford ", " Mazda " };

         
        cars[0] = " Morning ";

         
        System.out.println(" Phần tử tiên phong : " + cars[0]);
    }
}

Phần tử đầu tiên: Morning

Lấy về số phần tử hiện tại của mảng trong java

Mảng trong Java là một đối tượng, do vậy nó cũng có các thuộc tính và các phương thức như các đối tượng khác. Để lấy về số phần tử của mảng ta sử dụng thuộc tính length như sau:

Tên_mảng.length
public class Thaycacac {
    public static void main(String[] args) {
        String[] cars = { " Honda ", " BMW ", " Ford ", " Mazda " };
        System.out.println(" Độ dài của mảng cars là : " + cars.length);
    }
}

Độ dài của mảng cars là: 4

Duyệt các phần tử của mảng trong Java

Sử dụng vòng lặp for: bạn có thể lặp qua các phần tử mảng bằng vòng lặp for và sử dụng thuộc tính length để chỉ định số lần vòng lặp sẽ chạy.

public class Thaycacac {
    public static void main(String[] args) {
        String[] cars = { " Honda ", " BMW ", " Ford ", " Mazda " };
        for (int i = 0; i < cars.length; i+ +) {
            System.out.println(cars[i]);
        }
    }
}

Honda
BMW
Ford
Mazda

Sử dụng foreach: so với vòng lặp for thì vòng lặp foreach dễ viết hơn, nó không yêu cầu bộ đếm (sử dụng thuộc tính length) và nó dễ đọc hơn.

public class Thaycacac {
    public static void main(String[] args) {
        String[] cars = { " Honda ", " BMW ", " Ford ", 

"Mazda"

}; for (String car : cars) { System.out.println(car); } } }

Honda
BMW
Ford
Mazda

Sắp xếp mảng trong Java

Có nhiều phương thức mảng có sẵn, ví dụ Sort(), sắp xếp một mảng theo thứ tự bảng chữ cái hoặc theo thứ tự tăng dần.

import 

java.util.

Arrays; public class Thaycacac { public static void main(String[] args) { String[] cars = { " Honda ", " BMW ", " Ford ", " Mazda " }; Arrays.sort(cars); System.out.println(" Mảng cars sau khi được sắp xếp : "); for (String car : cars) { System.out.println(car); } } }

Mảng cars sau khi được sắp xếp:
BMW
Ford
Honda
Mazda

Truyền mảng vào phương thức trong java

Chúng ta hoàn toàn có thể truyền mảng vào phương pháp, điều này giúp tái sử dụng code logic để giải quyết và xử lý mảng bất kể

public class Thaycacac {
    static void min(int arr[]) {
        int min = arr[0];
        for (int i = 1; i < arr.length; i+ +)
            if (min > arr[i]) {
                min = arr[i];
            }
        System.out.println(min);
    }

    public static void main(String args[]) {
        int a[] = { 33, 3, 4, 5 };
        min(a); 
    }
}

3

Sao chép một mảng trong java

Chúng ta hoàn toàn có thể sao chép một mảng tới mảng khác bởi phương pháp arraycopy của lớp System. Cú pháp của phương pháp arraycopy

public class Thaycacac {
    public static void main(String[] args) {
        char[] copyFrom = { ' d ', ' e ', ' c ', ' a ', ' f ',
                ' f ', ' e ', ' i ', ' n ', ' a ', ' t ', ' e ', ' d ' };
        char[] copyTo = new char[7];

        System.arraycopy(copyFrom, 2, copyTo, 0, 7);
        System.out.println(new String(copyTo));
    }
}

caffein

Mảng nhiều chiều

Khai báo

Khai báo mảng N chiều trong Java được thực thi như sau :

image

Hoặc

image

Trong đó :

  • KDL gồm: kiểu nguyên thủy, kiểu đối tượng… nó xác định kiểu dữ liệu của từng phần tử của mảng.
  • sp1, sp2, …, sptN lần lượt là số phần tử trên chiều thứ 1, 2, .., N
 
int[][] a;
int a[][];  

 
int[][] a = new int[2][3];

 
int a[][]={
  {1, 2, 5}.  
  {2, 4, 7, 9}.  
  {1, 7}.  
}

Khai báo trên sẽ tạo ra một mảng hai chiều gồm : 3 hàng, nhưng trên mỗi hàng lại có số thành phần khác nhau, đơn cử là : trên hàng thứ nhất có 3 thành phần, hảng 2 gồm 4 thành phần và hàng thứ 3 gồm 2 thành phần .

Với khai báo trên nếu ta liệt kê các phần tử của mảng theo trình tự từ trái qua phải và từ trên xuống dưới thì các phần tử lần lượt là: a[0][0], a[0][1], a[0][2], a[1][0], a[1][1], a[1][2], a[1][3], a[2][0], a[2][1]

Truy xuất đến phần tử mảng nhiều chiều

tên_mảng[ind1][ind2]

khai báo và khởi tạo mảng đa chiều trong java

public class TestArray3 {
    public static void main(String args[]) {

         
        int arr[][] = { { 1, 2, 3 }, { 2, 4, 5 }, { 4, 4, 5 } };

         
        for (int i = 0; i < 3; i+ +) {
            for (int j = 0; j < 3; j+ +) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }

    

}

}

1 2 3
2 4 5
4 4 5