我对String数组有些困惑。如果我在方法中更改数组并在方法中访问它,它会保持更改,但如果我使用该方法更改它,然后立即访问它,它不起作用。
public class ArrayTester {
public static void main(String[] args){
String[] names = {"Jim", "Gary", "Bob"};
printMe(names);
remove(1, names);
printMe(names);
}
printMe(String[] array){
for(String str : array){
System.out.print(str + " ");
}
System.out.println();
}
remove(int pos, String[] array){
array2 = new String[array.length - 1];
for(int i = 0; i < pos; i++){
array2[i] = array[i];
}
for(int i = pos; i < array2.length - 1; i++){
array2[i] = array[i + 1];
}
array = array2;
//printMe(array); <-- works with printMe here, but not in the
// main method
}
}
我希望结果看起来像“Jim Gary Bob”,然后是“Jim Bob” 不幸的是,我两次获得“Jim Gary Bob”。但是,如果我将printMe放在remove方法而不是main方法中,我会得到“Jim Gary Bob”,然后是“Jim Bob” 我不知道为什么会这样,我怀疑它与数组的存储方式有关,但我无法弄明白。