Mảng trong java

Array - mảng trong java
Mảng là một cấu trúc lưu giữ các thành phần có cùng kiểu. Chiều dài 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
Nếu bạn muốn lưu giữ các thành phần khác kiểu nhau hay kích thước mảng có thể thay đổi động, dùng một Vector thay cho mảng

1. Tạo và sử dụng mảng
 Khai báo một biến tham chiếu đến mảng
ArrayType[] ArrayName
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
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
int[] anArrayOfInts; // Khai báo một mảng số nguyên
float[] anArrayOfFloats;
boolean[] anArrayOfBooleans;
Object[] anArrayOfObjects;
String[] anArrayOfStrings;
 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]
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
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];
 Truy xuất thành phần của mảng
ArrayVar[index]
index : chỉ vị trí của thành phần trong mảng cần truy xuất, có thể là giá trị, biến hay biểu thức, và có giá trị từ 0 đến ArraySize-1
Ví dụ : M[1] = 20;
 Lấy kích thước mảng
ArrayName.length
 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ụ 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());
}
}
}

2. Mảng đa chiều (Arrays of Arrays)
Mảng có thể chứa các thành phần là 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 cách 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 4x5 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 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ụ 1 :
public class ArrayOfArraysDemo {
public static void main(String[] args) {
String[][] cartoons = {
{ "Flintstones", "Fred", "Wilma", "Pebbles", "Dino" },
{ "Rubbles", "Barney", "Betty", "Bam Bam" },
{ "Jetsons", "George", "Jane", "Elroy", "Judy", "Rosie", "Astro" },
{ "Scooby Doo Gang", "Scooby Doo", "Shaggy", "Velma", "Fred", "Daphne" }
};
for (int i = 0; i < cartoons.length; i++) {
System.out.print(cartoons[0] + ": ");
for (int j = 1; j < cartoons.length; j++) {
System.out.print(cartoons[j] + " ");
}
System.out.println();
}
}
}
Chú ý là tất cả mảng con có chiều dài khác nhau. Tên của mảng con là cartoons[0], cartoons[1]...
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();
}
}
}

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 đối :
public static void arraycopy(ArrayType[] source,
int srcIndex,
ArrayType[] dest,
int destIndex,
int length)

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));
}
}

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

1 nhận xét:

Mình mới học java, cho mình vấn đề với đoạn code này với, mình viết để nhập giá trị cho các phần tử trong mảng
for (x=0; x<i; x++)
{
System.out.print("Nhập tên sinh viên thứ "+ x +": ");
arrString[x]=nhapDuLieu.nextLine();
}
tuy nhiên khi chạy thì nó không cho mình nhập giá trị cho phần tử đầu trong mảng

Nhập tên sinh viên thứ 0: Nhập tên sinh viên thứ 1:

Bạn xem giúp mình xem bị làm sao với

Reply

Đăng nhận xét