2010-10-17 45 views

回答

3

您的代碼:

int arr1[4] = new int[]; 

將無法​​編譯。它應該是:

int arr1[] = new int[4]; 

[]數組名稱前被認爲是很好的做法,所以你應該做的:

int[] arr1 = new int[4]; 
一般

陣列創建爲:

type[] arrayName = new type[size]; 

的上面的部分[size]指定要分配的數組的大小。

爲什麼我們在創建數組時使用new

因爲Java中的數組是對象。上例中的數組arrayName的名稱不是實際的數組,而只是一個參考。 new運算符在堆上創建數組,並將引用返回給新創建的數組對象,然後將其分配給arrayName

+1

我不會在'int'和'[]'之間放置空格。 – starblue 2010-10-17 07:31:24

6

新分配的內存,但是,這裏int []呢?

int[]部分只是簡單地指定了新分配的內存應該具有的類型。

然而,由於陣列不能動態地擴展,它沒有任何意義寫new int[](即使您在聲明中指定int[4]),你必須寫,要麼像這樣

int arr1[] = new int[4]; 

或類似這樣的

int arr1[] = {1, 2, 3, 4}; 

在JLS有關章節:

0

創建對象的實例。 new分配內存heapint arr1[4]=new int[];在堆上分配14個字節。

int數組的正確聲明是像以下:

int[] arr = new int[] {1,2,3}; // legal, array of size 3 
int[] a = new int[100]; // Declare and allocate, array of size 100 
+0

否,'INT ARR1 [4] =新int [];'不會編譯,所以它不會在堆上分配任何字節;} – aioobe 2010-10-17 07:22:16

+0

@aioobe:同意。但問題是:*新操作員做什麼* – 2010-10-17 07:26:22

1

上述程序聲明anArray使用以下行的代碼:

int[] anArray; //聲明整數數組

贊聲明其他類型的變量時,數組聲明包含兩個組件:數組的類型和數組的名稱。 數組的類型被寫爲[]類型,其中type是所包含元素的數據類型;方括號是特殊符號,表示該變量包含數組。數組的大小不是其類型的一部分(這就是括號爲空的原因)。與其他類型的變量一樣,該聲明實際上並不創建數組 - 它只是告訴編譯器該變量將包含指定類型的數組。

0
int[] a=new int[5]; 
  1. 在上述數組聲明INT []是陣列類型,即整型陣列
  2. a在陣列名稱例如聲明一個變量「a」 ------> INT一個; 數組一樣INT [] a其中[]是指示聲明數組唯一差異是[]

現在來到新

新的運營商,這是什麼操作的功能?

這個新的運算符會去堆內存並分配一個數組(因爲int [])並在數組類型int(由於int [5])中分配5個值來調用引用變量。 。

任何陣列中堆中創建給出引用變量

   memory diagram 
       --------------------- 
       | in heap memory | 
       |     | 
       ||------------------ | 
       || | | | | | | 
       |------------------- | 
    /  --------------------- 
    /
/ 
a/ 

5個位置作爲int[5]在上面的例子和參考變量指向陣列存儲器位置