1.值传递:只要是基本数据类型传递就是值传递,传递的就是值
package arrayDemo;
public class Demo1 {
public static void main(String[] args) {
int b =20;
change(b);// 实参 实际上的参数
System.out.println(b);
}
public static void change(int a){//形参 形式上的参数
a=100;
}
}
结果是:20
实参只是形参创建的一个副本,副本改变了,原本的不会发生改变
2.引用传递:传递的参数是按引用进行传递,传递的是引用的地址,变量对应的内存空间的地址,传递前和传递后都指向同一个引用(同一个内存空间)
package arrayDemo;
public class Demo1 {
public static void main(String[] args) {
int [] a={1,2,3};
System.out.println(a[0]);
change(a);
System.out.println(a[0]);
}
public static void change(int[] a ){
a[0]=100;
}
}
结果是1 100
由于引用传递,传递的是地址,方法改变的都是同一个地址中的值,
原来a[0]指向0x13地址,值是1,
后来在a[0] 指向的也是0x13地址,将值变成了100
所以,再查询a[0]的值的时候,值自然变成了100