Mảng là một đối tượng container chứa một số cố định các giá trị của một kiểu duy nhất. Chiều dài của một mảng được thiết lập khi mảng được tạo ra. Sau khi tạo ra, chiều dài của nó được cố định. Bạn đã nhìn thấy một ví dụ về mảng đã có, trong phương pháp chính của ứng dụng "Xin chào thế giới!". Phần này bàn về các mảng chi tiết hơn.
Mỗi mục trong một mảng được gọi là một yếu tố, và mỗi phần tử được truy cập bằng chỉ số của nó. Như trong hình minh họa ở trên, đánh số bắt đầu bằng 0. Yếu tố thứ 9, ví dụ, do đó sẽ được truy cập tại chỉ số 8.
Chương trình sau đây, ArrayDemo, tạo ra một mảng các số nguyên, đặt một số giá trị trong nó, và in mỗi giá trị đầu ra.
class ArrayDemo {
public static void main(String[] args) {
int[] anArray; // declares an array of integers
anArray = new int[10]; // allocates memory for 10 integers
anArray[0] = 100; // initialize first element
anArray[1] = 200; // initialize second element
anArray[2] = 300; // etc.
anArray[3] = 400;
anArray[4] = 500;
anArray[5] = 600;
anArray[6] = 700;
anArray[7] = 800;
anArray[8] = 900;
anArray[9] = 1000;
System.out.println("Element at index 0: " + anArray[0]);
System.out.println("Element at index 1: " + anArray[1]);
System.out.println("Element at index 2: " + anArray[2]);
System.out.println("Element at index 3: " + anArray[3]);
System.out.println("Element at index 4: " + anArray[4]);
System.out.println("Element at index 5: " + anArray[5]);
System.out.println("Element at index 6: " + anArray[6]);
System.out.println("Element at index 7: " + anArray[7]);
System.out.println("Element at index 8: " + anArray[8]);
System.out.println("Element at index 9: " + anArray[9]);
}
}
Kết quả của chương trình này là:Element at index 0: 100
Element at index 1: 200
Element at index 2: 300
Element at index 3: 400
Element at index 4: 500
Element at index 5: 600
Element at index 6: 700
Element at index 7: 800
Element at index 8: 900
Element at index 9: 1000
Trong một tình huống lập trình thực tế, bạn có thể muốn sử dụng một trong các vòng lặp hỗ trợ xây dựng cho chuyển đổi qua các mỗi phần tử của mảng, thay vì viết từng dòng riêng lẻ như trên. Tuy nhiên, ví dụ đây minh họa rõ cú pháp của mảng. Bạn sẽ tìm hiểu về các vòng lặp khác nhau xây dựng (for, while, và do-while) trong phần Control Flow.
Khai báo một biến cho tham khảo một Array :
Những chương trình trên anArray tuyên bố với các dòng mã sau đây:
int [] anArray; / / khai báo một mảng các số nguyên
Giống như khai báo cho các biến của kiểu khác, một khái báo mảng có hai thành phần: mảng của kiểu và tên của mảng. kiểu của một mảng được viết như kiểu [], trong đó type là kiểu dữ liệu chứa các yếu tố, các dấu ngoặc vuông có ký hiệu đặc biệt chỉ ra rằng biến này giữ một mảng. Kích thước của mảng không phải là một phần của kiểu nó (trong đó có lý do tại sao các ngoặc là trống rỗng). Tên của một mảng có thể là bất cứ điều gì bạn muốn, miễn là nó tuân theo các quy tắc và quy ước như trước đây thảo luận trong phần đặt tên. Như với các biến của các loại khác, việc khai báo không thực sự tạo ra một mảng - nó chỉ đơn giản cho trình biên dịch rằng biến này sẽ được giữ một mảng của các loại chỉ định.
Tương tự, bạn có thể khai báo mảng của các kiểu khác:
byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
float[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;
Bạn cũng có thể đặt dấu ngoặc vuông sau tên của mảng:
float anArrayOfFloats[]; // mẫu đây không được khuyến khích
Creating, Initializing, và Accessing một Array
Một cách để cho tạo ra một mảng với các toán tử new. Những câu lệnh tiếp theo trong chương trình ArrayDemo phân bổ một mảng với bộ nhớ đủ cho các phần tử số nguyên mười và gán mảng vào biến anArray.
anArray = new int [10]; //tạo ra một mảng các số nguyên
Nếu khai báo như ví dụ bên dới trình biên dịch sẽ in một lỗi, và biên dịch sẽ thất bại:
ArrayDemo.java: 4: anArray biến có thể không có được khởi tạo.
Các dòng tiếp theo gán giá trị cho mỗi phần tử của mảng:
anArray [0] = 100; //khởi tạo phần tử đầu tiên
anArray [1] = 200; //khởi tạo phần tử thứ hai
anArray [2] = 300; //vv
Mỗi phần tử mảng có truy cập bằng chỉ số nó:
System.out.println ("Element 1 lúc chỉ số 0:" + anArray [0]);
System.out.println ("Element 2 tại chỉ số 1:"+ anArray [1]);
System.out.println ("Element 3 lúc chỉ số 2:"+ anArray [2]);
Ngoài ra, bạn có thể sử dụng các cú pháp tắt để tạo ra và khởi tạo một mảng:
int [] anArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};
Ở đây, chiều dài của mảng được xác định bởi số lượng các giá trị được cung cấp giữa {và}.
Bạn cũng có thể khai báo một mảng trong mảng (cũng được biết đến như một mảng đa chiều) bằng cách sử dụng hai hay nhiều bộ dấu ngoặc vuông, ví dụ như String[][] names. Mỗi phần tử, do đó, phải được truy cập bởi một số tương ứng với các giá trị index.
Trong ngôn ngữ lập trình Java, một mảng đa chiều có chỉ đơn giản là một mảng mà các thành phần được tự mảng. Điều này là không giống như các mảng trong C hoặc Fortran. Một hệ quả của việc này là các hàng có phép thay đổi chiều dài, như trong các chương trình MultiDimArrayDemo sau đây:
class MultiDimArrayDemo {
public static void main(String[] args) {
String[][] names = {{"Mr. ", "Mrs. ", "Ms. "}, {"Smith", "Jones"}};
System.out.println(names[0][0] + names[1][0]); //Mr. Smith
System.out.println(names[0][2] + names[1][1]); //Ms. Jones
}
}
Kết quả của chương trình này là:
Mr. Smith
Ms. Jones
Cuối cùng, bạn có thể sử dụng tích hợp để xác định kích thước của mảng bất kỳ.
System.out.println (anArray.length);
sẽ được in kích thước của mảng cho đầu ra
Những class hệ thống đã có một phương pháp arraycopy mà bạn có thể sử dụng hiệu quả các sao chép dữ liệu từ một mảng vào mãng khác:
public static void arraycopy(Object src, int srcPos, Object dest,
int destPos,
int length)
Hai tham số đối tượng chỉ định từ mảng để sao chép và đến mảng sao chép. Ba tham số int chỉ định các vị trí bắt đầu trong mảng nguồn, và các vị trí bắt đầu trong mảng đích, và số lượng các phần tử của mảng để sao chép.
Chương trình sau đây, ArrayCopyDemo, khai báo một loạt các phần tử kiểu char, lỗi chính tả từ "decaffeinated". Nó sử dụng arraycopy để sao chép một dãy các thành phần mảng thành một mảng thứ hai:
class ArrayCopyDemo {
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));
}
}
Kết quả của chương trình này là: caffeinDangTrung.

Không có nhận xét nào:
Đăng nhận xét