2015-12-30 75 views
-2

在Java中,是否可以使用相同的值在一行中初始化多個數組?Java 2D多個數組初始化

例如,考慮代碼

double[][] array1 = { 
    { 4, 5, 1, 3}, 
    { 5, 6, 3, 4}, 
    {10,-1, 45,3}, 
    { 1, 3, 2, 4} 
}; 
double[][] array2 = { 
    { 4, 5, 1, 3}, 
    { 5, 6, 3, 4}, 
    {10,-1, 45,3}, 
    { 1, 3, 2, 4} 
} 

正如你可以看到,兩個數組都是相同的這一塊,他們得到了相同的初始化。我想知道是否可以在一條指令中聲明和賦值相同的值。

我想:

double[][] array1, array2 = { 
    { 4, 5, 1, 3}, 
    { 5, 6, 3, 4}, 
    {10,-1, 45,3}, 
    { 1, 3, 2, 4} 
}; 

但在上述情況下,只有array2被初始化。

編輯: 我正在尋找獨立的初始化。在可能的重複問題中提出的解決方案不能解決我尋找的問題:

對於「Initializing multiple variables to the same value in Java」,初始化是針對字符串的,並且在那裏每個字符串都有其自己的初始化(每種情況下都爲空字符串)。

在其他可能重複「How to deep copy 2 dimensional array (different row sizes)」,這是一個反覆的解決方案,我已經知道,但我不想找迭代求解

+2

[初始化多個變量爲相同的值的可能的複製在Java中](http://stackoverflow.com/questions/6202818/initializing-multiple-variables-to-the-same-value-in-java) – bhooks

+3

如果您打算單獨對它們進行變異,請不要使用它們;沒有簡單的方法來深入複製數組。 –

+0

如果你打算把它們指向相同的數據,你可以用兩行做類似的事情:'double [] [] array1,array2; array1 = array2 = ;' – phflack

回答

0
public static double[][] deepCopy(double[][] array) { 
    double[][] d = new double[array.length][]; 
    for (int i = 0; i < array.length; i++) 
     d[i] = Arrays.copyOf(array[i], array[i].length); 
    return d; 
}