2010-02-03 45 views

Trả lời

8

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.

0

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.

17

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. 
+0

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. –

+0

@Kevin: Cảm ơn :) – codaddict

+0

+1: Câu trả lời hay –

5

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 ->

  • array [0] -> null
  • array [1] -> null
  • array [2] -> null
  • mảng [3] -> null
  • mảng [4] -> null

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

-1

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.

Các vấn đề liên quan