Java 调用方法并引用数组

Java 调用方法并引用数组,java,Java,答案是5510,我不明白为什么,因为我以为是555。 我原以为在这种情况下会改变原来的数组 谁能帮我理解这个 谢谢大家! a=b语句将“b”的引用指定给“a” 如果你像a=newint[10]那样编码它将5510打印为输出。因此,除非您使用“new”,否则它将充当按值调用,并且在被调用方法中所做的更改不会反映在调用方法中 a=b语句将“b”的引用指定给“a” 如果你像a=newint[10]那样编码它将5510打印为输出。因此,除非您使用“new”,否则它将充当按值调用,并且在被调用方法中所做的

答案是5510,我不明白为什么,因为我以为是555。 我原以为在这种情况下会改变原来的数组

谁能帮我理解这个


谢谢大家!

a=b语句将“b”的引用指定给“a”


如果你像
a=newint[10]那样编码它将5510打印为输出。因此,除非您使用“new”,否则它将充当按值调用,并且在被调用方法中所做的更改不会反映在调用方法中

a=b语句将“b”的引用指定给“a”


如果你像
a=newint[10]那样编码它将5510打印为输出。因此,除非您使用“new”,否则它将充当按值调用,并且在被调用方法中所做的更改不会反映在调用方法中

由于
a
是一个基元类型的数组,它是
methodOne()
的一个传递值,因此主方法范围内的变量
a
保持不变

由于
a
是一个基元类型的数组,它是
methodOne()
的一个传递值,因此主方法范围内的变量
a
保持不变

将methodOne参数名称更改为“int[]c”将使您易于理解。methodOne中的参数“a”与main方法中的变量“a”完全不同。

将methodOne参数名称更改为“int[]c”将使您易于理解。methodOne中的参数“a”与main方法中的变量“a”完全不同。

简单的回答是:参考变量“a”是函数“main”和“methodOne”的局部变量

简单的回答是:参考变量“a”是函数“main”和“methodOne”的局部变量

在main()方法中,[]表示int[10]数组。将int[10]数组传递给methodOne()时,将为refereint[10]数组创建一个新的[]变量,该变量为[]。现在有2个a[]变量引用int[10]数组

现在创建b[],它引用int[5]数组。将b[]的数组分配给a[](属于methodOne())。但是main方法中的[]仍然指int[10]数组。

在main()方法中,[]指int[10]数组。将int[10]数组传递给methodOne()时,将为refereint[10]数组创建一个新的[]变量,该变量为[]。现在有2个a[]变量引用int[10]数组

现在创建b[],它引用int[5]数组。将b[]的数组分配给a[](属于methodOne())。但是main方法中的[]仍然引用int[10]数组。

在:
methodOne()
中,“a”是该方法的局部。 因此,当您执行
a=b

它不会对
main()
中的变量“a”进行任何更改

然后再次在
main()中打印变量“a”:
因此,它引用局部变量a并将其打印出来。

在:
methodOne()
中,“a”是该方法的局部变量。 因此,当您执行
a=b

它不会对
main()
中的变量“a”进行任何更改

然后再次在
main()中打印变量“a”:
所以它引用了一个局部变量a并打印它

public class midterm2 {
    static void methodOne(int[] a) {
        int[] b = new int[5];
        a=b;
        System.out.print(a.length);
        System.out.print(b.length);
    }
    public static void main(String[] args) {
        int[] a = new int[10];
        methodOne(a);
        System.out.print(a.length);

    }
}