簡體   English   中英

可以在Java中改變N維數組的大小嗎?

[英]Can the size of an N-dimensional array change in Java?

Java中的數組是一個對象。 因此,如果我有一個2D數組double[][] matrix = new double[5][5]那么該數組的每一行都是一個引用內存中單維數組的對象。 根據我的理解,一旦在java中設置了數組大小,就無法更改。 所以讓我聲明一個1D數組double[] d = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}然后我可以設置matrix[1] = d這樣第1行就是現在指向內存中的d。 我似乎沒有真正修復數組大小。 我可以將matrix聲明為任意大小,只需將引用更改為指向不同大小的數組。 如果matrix大小固定為5 x 5,為什么我可以這樣做?

分配

double[][] matrix = new double[5][5];

實際上創建了6個數組對象 一個數組類型為double[]的數組(即雙數組數組),長度為5,由matrix變量引用,5個數組的元素類型為double ,長度為5,由matrix[0]...matrix[4]引用matrix[0]...matrix[4]

就像你可以通過賦值改變matrix變量來引用一個新數組一樣:

matrix = new double[10][10];

您還可以通過指定以下內容來更改任何引用matrix[i]以引用新數組:

matrix[i] = new double[6];

您沒有更改任何現有陣列。 您正在更改引用變量的值,該引用變量引用一個數組以引用不同的數組。

簡單地說:因為這就是Java的父親使陣列工作的方式。

語法給出了一個提示:

double[][] matrix = new double[5][5]

你看,5,5只出現在右手邊 含義:數組維度不是 矩陣 “類型”的一部分!

關鍵是:Java中沒有真正的“多維”數組。 沒有辦法說:這個東西應該是“5 x 5”。 你總是得到一排“行”; 每行包含一列列。 因此,這些列可以具有不同的長度,因為它們完全相互獨立!

暫無
暫無

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

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