上菜代码 搞起来
public class Person {
int id ;
int age;
String school;
Person(int id,int age,String school){
this.id = id;
this.age = age;
this.school = school;
}
public void setAge(int a){
age = a;
}
}
public class Test {
public static void main(String[] args) {
Test t = new Test();
int age = 40;
Person tom = new Person(1, 20, "济南");
Person jack = new Person(2, 20, "北京");
t.Change1(age);
t.Change2(tom);
t.Change4(jack);
System.out.println(tom.id+"-----"+tom.age+"-----"+tom.school+"-----");
// 3 32 上海
System.out.println(jack.id+"-----"+jack.age+"-----"+jack.school+"-----");
// 2 66 北京
}
public void Change1(int i) {
i = 1001;
}
// 执行方法的时候会重启一个栈帧 这样是修改不了tom的值的
public void Change2(Person p){
p = new Person(3,32,"上海");
}
public void Change4(Person p){
p .setAge(66);
}
}

这个内存分析是jvm虚拟机中的内存和我们的计算机内存不是一个东西。
上面图片是执行到new Person(1, 20, “济南”);的内存状态
原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/276669.html