Java String数组在辅助方法中更改,但在main方法中还原。这是为什么?

时间:2017-12-11 18:19:47

标签: java arrays string methods

我对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” 我不知道为什么会这样,我怀疑它与数组的存储方式有关,但我无法弄明白。

0 个答案:

没有答案