参数传递问题
- 基本类型按值传递
- 引用类型按照内存地址进行传递。
基本类型按值传递
public class Student {
public static void main(String[] args) {
int a=10;
tese(a);//相当于把10作为参数给了tese这个方法。
System.out.println(a);//输出结果是10
public static void tese(int a){
a=100;
}
在【01每天学习十分钟…】里,我们讲过全局变量内存位置是堆内存,而局部变量是栈内存。
在这我把上面代码拆开分析。
首先main方法中的变量int a是局部变量,存在栈中
当我们运行main方法时,如下图会在栈中开一块栈内存,运行到int a=10的时候
接着程序往下运行,该运行 tese(a);此时又会在栈中开一块内存给方法tese(),并把参数传入,此时传入的是数字10,而不是int a=10 的地址.
然后tese()方法结束,tese的栈内存消失。如下图:
最后执行 System.out.println(a);
输出结果就是10