Java hoạt động hơi khác một chút so với nhiều ngôn ngữ khác. Những gì o
là trong ví dụ đầu tiên chỉ đơn giản là một tham chiếu đến đối tượng.
Khi bạn nói o = new MyObject()
, nó tạo đối tượng mới loại MyObject và tham chiếu o
cho đối tượng đó, trong khi trước khi o
tham chiếu objects[index]
.
Tức là, các đối tượng [index] chính nó chỉ là một tham chiếu đến một đối tượng khác trong bộ nhớ. Vì vậy, để thiết lập các đối tượng [index] thành MyObject mới, bạn cần phải thay đổi nơi các đối tượng [index] trỏ tới, chỉ có thể thực hiện được bằng cách sử dụng các đối tượng [index].
hình ảnh: (kỹ năng sơn khủng khiếp của tôi: D)
Giải thích: Đây là khoảng cách quản lý bộ nhớ Java hoạt động. Không chính xác, bằng bất kỳ phương tiện nào, nhưng gần như. Bạn có các đối tượng, tham chiếu đến A1. Khi bạn truy cập mảng đối tượng, bạn bắt đầu từ điểm tham chiếu bắt đầu (A1) và di chuyển về phía trước khối X. Ví dụ, tham chiếu chỉ mục 1 sẽ đưa bạn đến B1. B1 sau đó cho bạn biết rằng bạn đang tìm đối tượng tại A2. A2 cho bạn biết rằng nó có một trường nằm ở C2. C2 là một số nguyên, một kiểu dữ liệu cơ bản. Việc tìm kiếm được thực hiện.
o không tham chiếu A1 hoặc B1, nhưng C1 hoặc C2. Khi bạn nói new ...
, nó sẽ tạo một đối tượng mới và đặt o ở đó (ví dụ, trong vùng A3). Nó sẽ không ảnh hưởng đến A1 hoặc B1.
Hãy cho tôi biết nếu tôi có thể xóa mọi thứ một chút.
Nguồn
2012-02-16 04:44:37
Có cú pháp vòng lặp nào giống như cú pháp đầu tiên có trong java không? –
@ChandraSekhar: [cho mỗi vòng lặp java] (http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html). – RanRag
@ChandraSekhar RanRag là đúng. Tuy nhiên, điều đó không liên quan đến câu hỏi.Có lẽ OP chỉ viết lại mã của anh ta, không sao chép/dán và do đó suy nghĩ bằng ngôn ngữ ưa thích của anh ấy. –