//基本类型的参数传递
public class Demo01 {
public static void main(String[] args) {
int i = 2;
show(i);
System.out.println(i);
}
public static void show(int i){
i = 5;
}
}
基本类型作为参数传递的时候,刚开始时main方法压栈,然后main方法里的变量i,把自己的i空间里的值复制一份给调用的show方法,然后show根据自己收到的i的值,来对自己方法里的变量i进行操作,操作完成之后方法弹栈,最后输出的还是main方法里的i变量,所以show方法里的变量对main方法里的变量没有产生一点影响。这就是基本类型作为参数传递
再往程序里面加点东西看的会更加清晰
public class Demo01 {
public static void main(String[] args) {
int i = 2;
show(i);
System.out.println(i);
}
public static void show(int i){
i = 5;
System.out.println("show: "+i);
}
}
最后的执行结果如下
这个进一步说明了基本类型的参数传递的一些要点
//引用类型的参数传递
public class Demo02 {
int i ;
public static void main(String[] args) {
Demo02 d = new Demo02();
d.i = 5;
show(d);
System.out.println(d.i);
}
public static void show(Demo02 d){
d.i = 10;
}
}
最终的结果是10
这里是引用类型的参数传递,main方法先压栈,然后创建对象,讲引用变量空间地址复制了一份给到了show方法的引用类型的参数,然后现在用两个引用指向了同一个对象,main方法里面的先执行,然后show方法里面的后来才指向对象,所以会把main方法里面的覆盖掉。