簡體   English   中英

在java中創建數組時,new運算符會做什么?

[英]What does the new operator do when creating an array in java?

當我們創建一個classtype對象時,new運算符會在運行時分配內存。

myclass obj1 = new myclass();

這里myclass()定義了myclass的構造函數

int arr1[4] = new int[];

new分配內存,但int[]在這里做什么?

新的分配內存,但int []在這里做什么?

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

但是,由於數組不能動態增長,所以編寫new int[]是沒有意義的(即使你在聲明中指定了int[4] ),你必須像這樣編寫它

int arr1[] = new int[4];

或者像這樣

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

JLS中的相關部分:

你的代碼:

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

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

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

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

int[] a=new int[5];
  1. 在上面的數組聲明中,int []是數組類型,即整數類型數組
  2. a是數組名稱,例如聲明變量'a'------> int a; 對於數組int [] a的相同方式,其中[]表示聲明數組只有diff是[]

現在來到新的

new是一個運算符這個運算符的功能是什么?

這個新運算符轉到堆內存並分配一個數組(由於int [])並在數組類型int中分配5個值(由於int [5])調用引用變量。其中引用變量是arrayname即a。

在堆中創建的任何數組都被賦予引用變量a

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

在上面的示例中,5個位置為int[5] ,引用變量指向數組內存位置

創建對象的實例。 new堆上分配內存。 int 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM