使用方法更改现有数组的大小
Altering the size of an existing array with a method
如果向方法传递了对数组的引用,是否有任何方法可以更改该数组的大小,以便传入的数组引用将引用新的、更大的数组?
我不完全理解这个问题。我认为这意味着我最终将不得不在替换旧字符串的方法中创建一个新字符串。
任何帮助将不胜感激。到目前为止,这是我的代码:
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;
}
}
}
由于两个原因,这是不可能的。首先,Java 数组有 fixed length which cannot be changed since array is created. Second, Java is pass-by-value 语言,所以你不能用对新数组的引用替换传递的引用。通常这样的任务是通过使用 return 值来解决的:
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);
如果向方法传递了对数组的引用,是否有任何方法可以更改该数组的大小,以便传入的数组引用将引用新的、更大的数组?
我不完全理解这个问题。我认为这意味着我最终将不得不在替换旧字符串的方法中创建一个新字符串。 任何帮助将不胜感激。到目前为止,这是我的代码:
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;
}
}
}
由于两个原因,这是不可能的。首先,Java 数组有 fixed length which cannot be changed since array is created. Second, Java is pass-by-value 语言,所以你不能用对新数组的引用替换传递的引用。通常这样的任务是通过使用 return 值来解决的:
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);