2015-05-23 77 views
1

如果某個方法傳遞給數組的引用,是否有任何方法更改該數組的大小,以便傳入的數組引用將引用新的,更大的陣列?使用方法更改現有數組的大小

我不完全明白這個問題。我認爲這意味着我最終必須在替換舊方法的方法中創建一個新字符串。 任何幫助將不勝感激。這是我的代碼到目前爲止:

import java.util.Arrays; 

public class ASize { 
    static int num[] = {32, 34, 45, 64}; 
    public static void main(String[] args){ 


     alterThatSize(num); 
      System.out.println(Arrays.toString(num)); 
    } 

    public static void alterThatSize(int bre[]){ 
     for(int i = 0; i < 8; i++){ 
     bre[i] = 1 + i; 
     } 

     } 

} 
+0

你需要創建一個新的數組,oldArray + 1的大小,然後複製通常這樣的任務是通過使用返回值來解決舊的一個到新的一個 – yarivt

+0

在第二種方法中創建一個新的數組?以及如何複製? – userb

+0

你的問題還不夠清楚,你究竟想要做什麼? – yarivt

回答

2

這是不可能的,因爲兩個原因。首先,Java數組有fixed length,因爲創建了數組,所以無法更改。其次,Java是pass-by-value語言,所以你不能用引用新數組來替換傳遞的引用。

static int[] expandArray(int[] arr, int newSize) { 
    int[] newArr = new int[newSize]; 
    System.arraycopy(arr, 0, newArr, 0, arr.length); 
    return newArr; 
} 

使用方法如下:

num = expandArray(num, newSize); 
+0

沒錯,如果你想在數組中使用靈活的大小,你需要使用ArrayList。 – MaxZoom

+1

我明白了。但對於實際問題,答案是否?你不能改變該數組的大小,以便傳入的數組引用將引用新的更大的數組? – userb

+0

謝謝你的方式 – userb