cuốn sách gpt4 ai đã làm

Mảng Java trông như thế nào trong bộ nhớ?

In lại Tác giả: Người biết Thời gian cập nhật: 2024-03-11 23:51:11 27 4
mua khóa gpt4 Nike

Trong Java, mảng lưu trữ các giá trị nguyên thủy (int, char, ...) hoặc tham chiếu đến đối tượng (hay còn gọi là con trỏ).

Khi một đối tượng được tạo bằng cách sử dụng "new", không gian bộ nhớ sẽ được phân bổ trong heap và một tham chiếu được trả về. Điều này cũng áp dụng cho mảng vì mảng là đối tượng trong Java.

1 mảng một chiều

int mảng[] = int mới[3];

int[] arr chỉ là một tham chiếu đến một mảng gồm 3 số nguyên. Nếu bạn tạo một mảng gồm 10 số nguyên thì cũng giống như vậy - cấp phát một mảng và trả về một tham chiếu.

2 mảng hai chiều

Còn mảng 2D thì sao? Trên thực tế, chỉ có mảng một chiều trong Java. Mảng 2D chỉ là mảng của mảng 1D.

int[ ][ ] arr = new int[3][ ]; arr[0] = new int[3]; arr[1] = new int[5];

Mảng đa chiều tương tự như những gì bạn có thể tưởng tượng.

3 Chúng nằm ở đâu trong bộ nhớ?

Mảng cũng là đối tượng trong Java, do đó cách các đối tượng xuất hiện trong bộ nhớ cũng áp dụng cho mảng.

Như chúng ta biết,Vùng dữ liệu thời gian chạy JVM  Bao gồm cả đống, ngăn xếp JVM, v.v. Một ví dụ đơn giản, hãy xem vị trí lưu trữ của mảng và tham chiếu của chúng.

lớp A { int x; int y } ... public void m1() { int i = 0; } public void m2() { A a = new A() } ...

Với khai báo trên, hãy gọi m1() và xem điều gì sẽ xảy ra:

1. Khi m1 được gọi, một khung mới (Khung-1) được đẩy lên ngăn xếp và biến cục bộ i cũng được tạo trong Khung-1.

  1. Sau đó m2 được gọi bên trong m1 và một khung mới khác (Khung-2) được đẩy vào ngăn xếp. Trong m2, một đối tượng thuộc lớp A được tạo trong heap và biến tham chiếu được đặt trong Frame-2. Ngăn xếp và đống bây giờ trông như thế này:

Mảng được xử lý giống như đối tượng nên vị trí của mảng trong bộ nhớ rất đơn giản.

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress