Khi tôi sử dụng bình thường đối với vòng lặp,
tất cả các yếu tố trong một mảng sẽ khởi tạo thông thường:Tại sao các phần tử mảng không được khởi tạo trong vòng lặp nâng cao?
Object[] objs = new Object[10];
for (int i=0;i<objs.length;i++)
objs[i] = new Object();
Nhưng khi tôi sử dụng một vòng lặp for-each.
các phần tử mảng vẫn còn null
, sau khi vòng lặp:
Object[] objs = new Object[10];
for (Object obj : objs)
obj = new Object();
Tôi nghĩ obj
đề cập đến một yếu tố đặc biệt trong một mảng,
vì vậy nếu tôi khởi tạo nó, phần tử mảng sẽ cũng được khởi tạo.
Tại sao điều đó không xảy ra?
Mục 14.14.2 không cho tôi biết gì về điều này nhưng câu trả lời của bạn rất rõ ràng, cảm ơn! –
Chỉ cần kiểm tra, điều đó có nghĩa là các phương thức 'objs [i]' vẫn có thể được thực hiện thông qua 'obj' bằng cách thực hiện' obj.method() '? Vì 'obj' trỏ đến' objs [i] ' – SmRndGuy
@SmRndGuy: Bạn có ý nghĩa gì bởi" phương pháp ... vẫn có thể được thực hiện "? Bạn vẫn có thể gọi các phương thức thông qua tham chiếu, nhưng nó sẽ không thay đổi nội dung của mảng. –