簡體   English   中英

為什么第二維在java中的2d數組中不是必需的?

[英]Why second dimension is not mandatory in 2d array in java?

int a[][]=new int[2][]; // It works without any error

為什么此代碼段中缺少第二個維度?

從技術上講,2D陣列是一個陣列陣列。 您指定的代碼會告訴您要擁有多少個數組。

您可以按如下方式進一步初始化:

int a[][] = new int[2][];
a[0] = new int[3];
a[1] = new int[5];

new int[2][2]的東西只不過是上面代碼的濃縮版本。

這不是強制性的,因為不需要第二維來計算保存陣列所需的內存量。

比較以下內容:

int[] a = new int[2];

在這種情況下,需要指示JVM為一個包含兩個整數的數組分配空間。

另一方面:

int[][] = new int[2][];

在這種情況下,需要指示JVM 為整數數組對象的兩個引用分配空間。 這些整數數組對象最終的大小無關緊要,因為它不會改變引用的大小。

實際上,這兩個陣列可以具有不同的大小,甚至根本不可以創建。

數組中的第二維在Java中是可選的。 您可以創建二維數組而不指定兩個維度,例如int [4] []是有效的數組聲明。

其背后的原因是Java不支持真正意義上的多維數組。 在一個真正的二維數組中,數組的所有元素都占用了一塊連續的內存塊 ,但在Java中卻不是這樣。

相反,多維數組是一個數組數組 例如,Java中的二維數組只是一維數組的數組,如String [] []是一個String []或“數組字符串數組”數組的數組。 此圖顯示了二維數組在Java中的存儲方式: 在此輸入圖像描述

暫無
暫無

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

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