Java方法中的有参数据传递有两种;一种是值传递;另一种是引用传递(其实就是地址传递);我们先看一段代码(虽然长,但是很简单易懂);
public class Test { static void changeAge(int x) { x = 0; } static void changeName(String x) { x=""; } static void changeGrades(int [] x) { //地址传递后,这个 x 其实就是 grades ;也就是说这个方法是对原数据进行的操作 System.out.println(x); //将 x 的地址输入,会发现和 grades 是同一个地址 x[0]=71; //初中,72分及格,皮一下 x[1]=71; x[2]=71; } public static void main(String[] args) { int age = 12; String name = "Tom"; int [] grades = new int[] {100,120,110}; System.out.println(age); changeAge(age); //这里是值传递;等于语句 changeAge(12); System.out.println(age); System.out.println(); System.out.println(name); changeName(name); //这里也是值传递;等于语句 changeName("Tom"); System.out.println(name); System.out.println(); for(int data:grades) { System.out.println(data); } System.out.println(grades); //这里是输出grades,可以看出来输出的是地址,而不是数组 changeGrades(grades); //这里是引用传递,也就是地址传递,因为此时的grades是地址,不是数组 for(int data:grades) { System.out.println(data); } } } 12 12 Tom Tom 100 120 110 [I@52e922 [I@52e922 71 71 71定义三个方法,分别是 changeAge()、changeName() 和 changeGrades();然后将定义好的 age、name 和 grades 使用方法执行一遍,可以发现,除了 grades数组 ;其他的都没有改变,这就涉及到值传递和引用传递(地址传递)的区别了;
