Bổ trợ kiến thức Java cơ bản cho khóa học lập trình Android (phần 3)
Trong bài viết hôm nay chúng ta sẽ cũng nhau tìm hiểu về khái niệm mảng trong Java. Đây là một khái niệm quan trọng sẽ theo chúng suốt quá trình của khóa học lập trình android. Cùng bắt đầu tìm hiểu nhé.
Mảng là một cấu trúc lưu trữ các thành phần dữ liệu, chiều dài của một mảng được thiết lập và cố định khi mảng được tạo lúc chạy chương trình. Mỗi thành phần của mảng được truy xuất bởi chỉ số của nó trong mảng.
1. Tạo và sử dụng mảng:
a. Khai báo một biến tham chiếu đến mảng.
Cú pháp: ArrayType[] ArrayName; trong đó: ArrayType là kiểu dữ liệu của các thành phần chứa trong mảng và dấu [] chỉ định đó là một mảng, kiểu dữ liệu thành phần có thể là bất kỹ kiểu cơ sở, tham chiếu.
Khai báo một biến có kiểu ArrayType dùng để tham chiếu đến mảng, nhưng không có mảng nào thật sự tồn tại.
Ví dụ:
int[] anArrayOfInts;
float[] anArrayOfFloats;
boolean[] anArrayOfBooleans;
Object[] anArrayOfObjects;
String[] anArrayOfStrings;
float[] anArrayOfFloats;
boolean[] anArrayOfBooleans;
Object[] anArrayOfObjects;
String[] anArrayOfStrings;
b. Tạo một mảng
Bạn dùng toán tử new để tạo một mảng, nghĩa là cấp phát bộ nhớ cho các thành phần và gán mảng đến biến đã khai báo
ArrayName = new ArrayType[ArraySize]
ArrayName = new ArrayType[ArraySize]
Trong đó: ArraySize: là số thành phần của mảng.
Ví dụ: int[] M; // khai báo biến mảng kiểu số nguyên
M = new int[10]; // tạo một mảng số nguyên
M = new int[10]; // tạo một mảng số nguyên
Bạn có thể kết hợp sự khai báo biến mảng và tạo mảng như sau :
ArrayType[] ArrayName = new ArrayType[ArraySize]
Có thể viết như sau :
ArrayType ArrayName[] = new ArrayType[ArraySize]
Ví dụ : int[] M = new int[10];
int M[] = new int[10];
ArrayType[] ArrayName = new ArrayType[ArraySize]
Có thể viết như sau :
ArrayType ArrayName[] = new ArrayType[ArraySize]
Ví dụ : int[] M = new int[10];
int M[] = new int[10];
Truy xuất thành phần của mảng:
Cú pháp: ArrayVar[index]
Với index là chỉ số của thành phần trong mảng cần truy xuất, có thể là giá trị hay biểu thức, và có giá trị từ 0 đến ArraySize – 1.
c. Lấy kích thước của mảng:
Cú pháp: ArrayName.length
d. Khởi tạo giá trị đầu của mảng
Mảng có thể khởi tạo khi khai báo. Mảng khởi tạo là danh sách các biểu thức cách nhau bởi dấu phẩy và bao quanh bởi dấu ngoặc móc. Mảng sẽ được khởi tạo tự động để lưu số phần tử mà bạn xác định lúc khởi tạo, không cần sử dụng new. Chiều dài của mảng là số giá trị giữa { và }
Ví dụ : boolean[] answers = { true, false, true, true, false };
int month_days[] = {31,28,31,30,31,30,31,31,30,31,30,31};
Ví dụ : boolean[] answers = { true, false, true, true, false };
int month_days[] = {31,28,31,30,31,30,31,31,30,31,30,31};
Sau đây chúng ta sẽ xét một số vị dụ về mảng cơ bản:
Ví dụ 1: Tạo và sử dụng mảng có thành phần kiểu cơ sở
public class ArrayDemo {
public static void main(String[] args) {
int[] anArray;
anArray = new int[10];
for (int i = 0; i < anArray.length; i++) {
anArray = i;
System.out.print(anArray + ” “);
}
System.out.println();
}
}
Ví dụ 2 : Tạo và sử dụng mảng có thành phần kiểu tham lớp String
public class ArrayOfStringsDemo {
public static void main(String[] args) {
String[] anArray = { “String One”, “String Two”, “String Three” };
for (int i = 0; i < anArray.length; i++) {
System.out.println(anArray.toLowerCase());
}
}
}
public class ArrayDemo {
public static void main(String[] args) {
int[] anArray;
anArray = new int[10];
for (int i = 0; i < anArray.length; i++) {
anArray = i;
System.out.print(anArray + ” “);
}
System.out.println();
}
}
Ví dụ 2 : Tạo và sử dụng mảng có thành phần kiểu tham lớp String
public class ArrayOfStringsDemo {
public static void main(String[] args) {
String[] anArray = { “String One”, “String Two”, “String Three” };
for (int i = 0; i < anArray.length; i++) {
System.out.println(anArray.toLowerCase());
}
}
}
2. Mảng đa chiều
Mảng có thể chứa các thành phần mảng. Để khai báo một biến mảng đa chiều cần xác định mỗi chiều của mảng bằng cash sử dụng các cặp dấu ngoặc vuông.
Ví dụ : int M[][] = new int[4][5];
int[][] M = new int[4][5];
M là một mảng 4×5 thành phần là các số nguyên.
int[][] M = new int[4][5];
M là một mảng 4×5 thành phần là các số nguyên.
Khi cấp phát bộ nhớ cho mảng đa chiều, bạn có thể chỉ định chiều dài của mảng chính, và không chỉ định chiều dài của mảng con cho đến khi tạo ra chúng:
Ví dụ: int M[][] = new int [3][];
M[0] = new int[3]; M[1] = new int[4]; M[2] = new int[2];
Ví dụ 2 :
public class ArrayOfArraysDemo2 {
public static void main(String[] args) {
int[][] aMatrix = new int[4][];
for (int i = 0; i < aMatrix.length; i++) {
aMatrix = new int[5];
for (int j = 0; j < aMatrix.length; j++) {
aMatrix[j] = i + j;
}
}
for (int i = 0; i < aMatrix.length; i++) {
for (int j = 0; j < aMatrix.length; j++) {
System.out.print(aMatrix[j] + ” “);
}
System.out.println();
}
}
}
public class ArrayOfArraysDemo2 {
public static void main(String[] args) {
int[][] aMatrix = new int[4][];
for (int i = 0; i < aMatrix.length; i++) {
aMatrix = new int[5];
for (int j = 0; j < aMatrix.length; j++) {
aMatrix[j] = i + j;
}
}
for (int i = 0; i < aMatrix.length; i++) {
for (int j = 0; j < aMatrix.length; j++) {
System.out.print(aMatrix[j] + ” “);
}
System.out.println();
}
}
}
3. Sao chép mảng (Copying Arrays)
Sử dụng phương thức arraycopy của System sao chép dữ liệu từ một mảng đến một mảng khác. Phương thức arraycopy yêu cầu 5 tham số:
Public static void arracopy (ArrayType[] source, int srcIndex. ArrayType[] dest, int destIndex, int lenght)
Hai tham đối Object chỉ định mảng nguồn và mảng đích. Ba tham đối int chỉ vị trí bắt đầu trong mỗi mảng nguồn và đích, và số thành phần để sao chép. Biểu đồ này minh hoạ việc sao chép :
Ví dụ :
public 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));
}
}
public 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));
}
}
Chú ý rằng mảng đích phải được cấp phát và phải đủ lớn để chứa dữ liệu được sao chép
0 nhận xét: