JavaRush /Blog Java /Random-VI /Mảng Java
articles
Mức độ

Mảng Java

Xuất bản trong nhóm

Mảng

Mảng là một cấu trúc dữ liệu lưu trữ các giá trị cùng loại. Một phần tử mảng riêng lẻ được truy cập bằng chỉ mục số nguyên. Ví dụ: nếu a là một mảng gồm các số nguyên thì giá trị của biểu thức a[i] bằng số nguyên thứ i trong mảng. Mảng Java - 1Một mảng được khai báo như sau: đầu tiên, loại của mảng được chỉ định, tức là loại phần tử có trong mảng, theo sau là một cặp dấu ngoặc vuông trống và sau đó là tên của biến. Ví dụ: đây là cách khai báo một mảng bao gồm các số nguyên:
int[] a;
Tuy nhiên, câu lệnh này chỉ khai báo một biến аmà không khởi tạo nó bằng một mảng thực tế. Để tạo một mảng, bạn cần sử dụng toán tử new.
int[] a = new int [100];
Toán tử này tạo ra một mảng gồm 100 số nguyên. Các phần tử của mảng này được đánh số từ 0 đến 99 (không phải từ 1 đến 100). Sau khi được tạo, mảng có thể được lấp đầy, chẳng hạn bằng cách sử dụng vòng lặp.
int[] а = new int[100];
for (int i = 0; i < 100; i++)
 a[i] = i; //Заполняет массив числами от 0 до 99
Nếu bạn cố gắng truy cập một phần tử а [100](hoặc bất kỳ phần tử nào khác có chỉ mục nằm ngoài phạm vi từ 0 đến 99) bằng cách tạo một mảng gồm 100 phần tử, chương trình sẽ chấm dứt vì ngoại lệ chỉ mục mảng nằm ngoài phạm vi sẽ xảy ra. Để đếm số phần tử trong một mảng, hãy sử dụng phương thức Tên mảng .length. Ví dụ,
for (int i = 0; i < a.length; i++, System.out.println(a[i]));
Khi một mảng được tạo, bạn không thể thay đổi kích thước của nó (tất nhiên, mặc dù bạn có thể thay đổi các phần tử riêng lẻ của nó). Nếu bạn cần thay đổi kích thước của mảng thường xuyên trong quá trình thực hiện chương trình, tốt hơn nên sử dụng một cấu trúc dữ liệu khác gọi là danh sách mảng. Một mảng có thể được khai báo theo hai cách:
int[] a;
or
int a[];
Hầu hết các lập trình viên Java thích kiểu đầu tiên vì nó phân tách rõ ràng hơn kiểu mảng int [](mảng số nguyên) với tên biến.

Bộ khởi tạo mảng và mảng không tên

Java có một phương tiện để đồng thời tạo và khởi tạo một mảng. Đây là một ví dụ về cấu trúc cú pháp như vậy:
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
Lưu ý rằng trong trường hợp này không cần sử dụng toán tử new. Ngoài ra, bạn thậm chí có thể khởi tạo một mảng chưa được đặt tên:
new int[] {16, 19, 23, 29, 31, 37}
Biểu thức này phân bổ bộ nhớ cho một mảng mới và điền vào nó các số được chỉ định trong dấu ngoặc nhọn. Trong trường hợp này, số lượng của chúng được tính toán và theo đó, kích thước của mảng được xác định. Cấu trúc cú pháp này thuận tiện khi sử dụng để khởi tạo lại một mảng mà không cần tạo biến mới. Ví dụ, biểu thức
smallPrimes = new int{17, 19, 23, 29, 31, 37};
là biểu thức rút gọn
int[] anonymous = {17, 19, 23, 29, 31, 37};
smallPrimes = anonymous;
Bạn có thể tạo một mảng có kích thước bằng không. Một mảng như vậy có thể hữu ích khi viết một phương thức đánh giá một mảng hóa ra trống. Một mảng có độ dài bằng 0 được khai báo như sau:
new тип Элементов[]
Lưu ý rằng mảng như vậy không tương đương với một đối tượng null.

Sao chép mảng

Một mảng có thể được sao chép sang mảng khác, nhưng cả hai biến sẽ tham chiếu đến cùng một mảng.
int[] luckyNumbers = smallPrimes;
luckyNumbers[5] = 12; //Теперь элемент smallPrimes[5]также equals 12
Kết quả được hiển thị trong hình. 3.1. Nếu bạn cần sao chép tất cả các phần tử của mảng này sang mảng khác, bạn nên sử dụng phương thức arraycopy từ lớp System. Cuộc gọi của nó trông như thế này:
System.arraycopy(from, fromlndex, to, tolndex, count);
Mảng tophải đủ lớn để chứa tất cả các phần tử cần sao chép. Mảng Java - 2
Hình.3.1. Sao chép một mảng
Ví dụ: các toán tử được hiển thị bên dưới, kết quả của chúng được hiển thị trong Hình. 3.2, tạo hai mảng rồi sao chép bốn phần tử cuối cùng của mảng đầu tiên vào mảng thứ hai. Quá trình sao chép bắt đầu từ vị trí thứ hai trong mảng nguồn và các phần tử được sao chép được đặt trong mảng đích bắt đầu từ vị trí thứ ba.
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
int[] luckyNumbers = {1001, 1002, 1003, 1004, 1005, 1006, 1007};
System.аrrаусору(smallPrimes, 2, luckyNumbers, 3, 4);
for (int i = 0; i < luckyNumbers.length; i++)
System.out.println(i + ": " + luckyNumbers[i]);
Thực hiện các câu lệnh này sẽ tạo ra kết quả sau.
0: 1001
1: 1002
2: 1003
3: 5
4: 7
5: 11
6: 13
Mảng Java - 3
Cơm. 3.2. Sao chép các phần tử mảng
Mảng trong Java khác biệt đáng kể so với mảng trong C++. Tuy nhiên, thực tế nó giống như một con trỏ tới một mảng động. Điều này có nghĩa là người vận hành
int[] a = new int[100]; //Java
tương đương với toán tử
int* = new int[100]; //C++,
а не
int a[100]; //C++
Trong Java, []toán tử mặc định kiểm tra phạm vi chỉ mục. Ngoài ra, Java không có con trỏ số học—bạn không thể tăng con trỏ để truy cập phần tử tiếp theo của mảng. Liên kết tới nguồn: mảng Java
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION