là hai thứ giống nhau?làm cho các phần tử của một mảng rỗng
for(int i=0; i<array.length; i++){
array[i] = null;
}
và
array = null;
là hai thứ giống nhau?làm cho các phần tử của một mảng rỗng
for(int i=0; i<array.length; i++){
array[i] = null;
}
và
array = null;
Không, là người đầu tiên làm cho mỗi phần tử của mảng null, chiều dài của mảng sẽ vẫn được array.length, thứ hai sẽ đặt biến mảng null.
Không hề.
Trong trường hợp đầu tiên, bạn đặt tất cả các tham chiếu trong mảng của bạn thành rỗng.
Trong trường hợp thứ hai, bạn đang đặt chính tham chiếu đến mảng đó thành null.
Một đoạn nhỏ để thấy sự khác biệt:
// declare a array variable that can hold a reference.
String [] array;
// make it null, to indicate it does not refer anything.
array = null;
// at this point there is just a array var initialized to null but no actual array.
// now allocate an array.
array = new String[3];
// now make the individual array elements null..although they already are null.
for(int i=0;i<array.length;i++)
{
array[i] = null;
}
// at this point we have a array variable, holding reference to an array,
// whose individual elements are null.
Không, nó không phải là như nhau.
Như một vấn đề của thực tế, đối với đoạn đầu tiên của mã để chạy một cách chính xác, biến mảng cần được khai báo và khởi tạo như thế này (ví dụ)
Object[] array = new Object[5];
Điều này tạo ra một mảng của 5 yếu tố với nhau phần tử có giá trị null
.
Khi bạn có điều này, trong ví dụ đầu tiên, những gì bạn đang làm là gán một giá trị rỗng cho mỗi phần tử array[i]
. array
sẽ không là null
. Vì vậy, bạn nên có một cái gì đó như thế này.
mảng ->
Bằng cách array = null
bạn đang nói rằng tài liệu tham khảo mảng không còn s đó là mảng các phần tử. Bây giờ bạn cần có
mảng -> null
Cả hai đều không hoạt động! Nếu bạn có một mảng các số nguyên và bạn cố gắng tạo một phần tử null, bạn không thể làm arr [i] = null; vì số nguyên không thể được chuyển đổi thành rỗng.
Sau câu lệnh đầu tiên 'mảng = null;' câu lệnh của bạn "... chỉ là một tham chiếu đến một chuỗi ..." không hoàn toàn chính xác. Đây thực sự là một biến có thể chứa tham chiếu nhưng không có tham chiếu. –
@Kevin: Cảm ơn :) – codaddict
+1: Câu trả lời hay –