Mảng nhiều chiều

Một phần của tài liệu Bài giảng Lập trình Java (Trang 70)

d) Chương trình ứng dụn gở dạng Applet lẫn dạng độc lập

6.1.6 Mảng nhiều chiều

Các phần tử của mảng có thể tham chiếu tới các mảng khác. Trong Java, mảng của mảng (mảng nhiều chiều) được khai báo như sau:

<Kiểu các phần tử> [][]…[] <Tên mảng>;

hoặc <Kiểu các phần tử> <Tên mảng> [][]…[];

Toán tử [] có thể sử dụng ở cả hai vị trí, ví dụ: int [] [] mang1; //Mảng hai chiều tương đương với:

int mang1[] [];

và cũng tương đương với: int [] mang1[];

Thông thường chúng ta có thể kết hợp cả khai báo với thiết lập mảng nhiều chiều tương tự như đối với mảng đơn.

int [][] mangA = new int [4][5]; //Ma trận có 4 hàng 5 cột

Lệnh trên thiết lập mảng mangA có 4 phần tử, mỗi phần tử lại là mảng mangA[i]

có 5 phần tử với i = 1, 2, 3, 4. Như thế mảng hai chiều còn được gọi là mảng của mảng. Phần tử thứ j của mangA[i], j = 1, 2, .., 5 được truy nhập bởi mangA[i][j]. Do vậy, kích thước của mangAmangA.length = 4 và mỗi phần tử của nó lại là mảng có kích thước là mangA[i].length = 5, i = 1, 2, 3, 4.

Hơn thế nữa, mảng nhiều chiều có thể được thiết lập và khởi tạo tường minh các giá trị ban đầu như đối với mảng đơn.

double [][] maTran = { {1, 2, 3, 4}, //hàng 1 {0, 2, 0, 0}, //hàng 2 {0, 0, 3, 0}, //hàng 3 {0, 0, 0, 4}, //hàng 4 };

Lưu ý: Các mảng trong mảng nhiều chiều không nhất thiết phải có số phần tử

giống nhau. Ví dụ, mảng dayDen sau có 5 phần tử là các mảng có kích thước khác nhau.

{new BongDen(), null, new BongDen()}, //Hàng có 3 phần tử (1) {null, new BongDen()}, // Hàng có 2 phần tử (2)

{}, // Hàng không có phần tử (3)

{new BongDen()}, // Hàng có 1 phần tử (4)

{null} //Hàng chưa được tạo lập (5)

};

Không nên truy nhập đến những phần tử của mảng nếu nó chưa được xây dựng. Ví dụ, nếu chưa gán gì cho dayDen[4] thì sẽ nhận được NullPointerException, nếu bạn định truy nhập đến dayDen[4].length. Để tránh lỗi thì thường chúng ta nên kiểm tra trạng thái của các phần tử.

if( dayDen[4] != null){

//Truy nhập đến các phần tử của dayDen[4] }

Lưu ý: Như chúng ta đã khẳng định từ đầu, tất cả các lớp đều là lớp con của

Object. Trong đó, mảng cũng là lớp con của Object. Do vậy, giữa mảng và Object có thể thực chuyển đổi kiểu:

Chuyển từ kiểu mảng về Object (Mở rộng kiểu). Chuyển từ Object sang kiểu mảng (Thu hẹp kiểu). Ví dụ:

class EpKieu{

public static void main(String [] args){

int [] a = new int[5]; Object o;

o = a; //int[] là con của Object int [] b = new int[5];

b = (int[]) o; //Xem đối tượng của Object như mảng int[] }}

Ngoài ra, cũng cần lưu ý thêm là cấu trúc mảng bảo toàn cấu trúc phân cấp giữa các lớp, nghĩa là nếu B là lớp con của lớp A thì B[] cũng là lớp con của lớp A[]

Một phần của tài liệu Bài giảng Lập trình Java (Trang 70)

Tải bản đầy đủ (DOC)

(138 trang)
w