/**
* 关于参数的传递问题
* 最终结论:实际上传递的是变量中保存的“值”,有时是具体的字面值,有时是java对象的内存地址
* 举例:
* int i = 10;
* int k = i; i 传递给 k 实际上只是将i变量中保存的10传递给了k,k实际上是一块全新的内存空间
*
* User u = new User();
* User u1 = u; u 传递给u1,实际上是将变量u中保存的内存地址赋值给了u1,u和u1实际上是两个不同的引用(局部变量)
* 但是这两个不同的引用都指向堆内存中的同一个java对象
*/
public class 参数的传递问题 { //运行内存图见下图1
public static void main(String[] args) {
int i = 10;
add(i);
System.out.println("main --->" + i);//main --->10
}
private static void add(int i) {
i ++;
System.out.println("add --->" + i);//add --->11
}
}
class 参数的传递2{ //运行内存图见下图2
public static void main(String[] args) {
User u = new User(10);
add(u);
System.out.println("main ----->" + u.age);//main ----->11
}
private static void add(User u) {
u.age++;
System.out.println("add ----->" + u.age);//add ----->11
}
}
class User {
//属性年龄
int age;
//构造方法
public User(int age) {
this.age = age;
}
}

图1 图2