public class Test {
public static void change(char[] a){
a[0] = '1';
a[1] = '2';
}
public static void main(String args[]){
char[] a = new char[]{'a','b'};
change(a);
System.out.println(a);
}
}
Run Code Online (Sandbox Code Playgroud)
输出是12
public class Test {
public static void change(char[] a){
a = new char[]{'1','2'};
}
public static void main(String args[]){
char[] a = new char[]{'a','b'};
change(a);
System.out.println(a);
}
}
Run Code Online (Sandbox Code Playgroud)
输出是ab.我理解我错过了一些关于java传递方法参数的方法.我理解对象的引用是按值传递的.但是,我无法将我理解的内容与这些程序的结果相协调.
在版本"2"中,更改方法"不执行任何操作",因为您要为其分配一个新数组a,即本地(参数)变量 a.这对分配给amain方法中声明的变量的数组没有影响.
当change()方法完成时,新数组超出范围并且无法访问(因此专门用于垃圾收集).