值传递 : 指的是基本数据类型传递。传值之后,如果在对应方法中将值更该,调用处值的大小不会发生改变。
示例代码:
public static void main(String[] args) {
int i = 10;
m1(i);
System.out.println("main--> "+i);
}
public static void m1(int i){
i++;//10 i==11
System.out.println("m1--->"+i);
}
运行结果:
m1--->11
main--> 10
引用传递 : 指的是引用类型的传递,被调用方法通过引用,把内存中数据更改,调用处再次通过地址找到空间后,值已经发生更改。
示例代码:
public static void main(String[] args) {
int[] a = {1,2,3,4};
m1(a);
for (int i : a) {
System.out.print(i+" ");
}
}
public static void m1(int[] arr){
arr[1] = 10;
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j]+" ");
}
System.out.println();
}
运行结果:
1 10 3 4
1 10 3 4