java语言当中方法调用的时候涉及到参数传递的问题
参数传递实际上传递的是变量中保存的具体值
【代码一:传递基本数据类型】
/*
int i = 10;
add(i);等同于:add(10);
*/
public class Test1 {
public static void main(String[] args) {
int i = 10;
add(i);//add方法调用的时候,是add方法传递了一个变量i,传的是变量i中保存的值
System.out.println("main---> " + i);//10
}
private static void add(int i) {
i++;
System.out.println("add--->" + i);//11
}
}
内存图如下:
【代码二:传递引用数据类型】
public class Test2 {
public static void main(String[] args) {
User u = new User(20);
//User u = 0x1234;
//传递u给add方法的时候,实际上传递的是u变量中保存的值,只不过这个值是一个java对象的内存地址
add(u);//等同于:add(0x1234);
System.out.println("main--->"+u.age);//21
}
private static void add(User u) {
u.age++;
System.out.println("add--->"+u.age);//21
}
}
class User{
//实例变量
int age;
//构造方法
public User(int i){
this.age = i;
}
}
内存图如下: