JAVA方法中数组作为形参,传的是引用

之前一直以为传数组和基本类型都是传的值,今天做题时发现传数组传的其实是引用。

public class Tests {

    public static void main(String[] args) {
        int[] s = { 1, 2, 3, 4, 5 };
        change1(s);
        for (int i : s) {
            System.out.print(" " + i);
        }
        System.out.println();
        change2(s);
        for (int i : s) {
            System.out.print(" " + i);
        }
        System.out.println();
    }

    // 传递的引用,直接修改内容,,s+0,s+1的值被改变
    private static void change1(int[] s) {
        s[0] = 6;
        s[1] = 7;
    }

    // 传递的也是引用,但s=b无法改变s的指针,所以s内容不会变
    private static void change2(int[] s) {
        int[] b = { 5, 4, 3, 2, 1 };
        s = b;
    }
}

输出内容

6 7 3 4 5
6 7 3 4 5

你可能感兴趣的:(JAVA,java)