class Test
{
public static void main(String[] args)
{
int a = 2;
int b = a;
b = b+3;
System.out.println("a="+a);
System.out.println("b="+b);
//a与b存在栈内存中,将a的值复制一份给b,int b = a是将a的值复制一份给b,复制之后a与b之间就没有任何关联,b的修改影响不到a。
//所以上面打印的结果是:a=2, b=5
Person p1 = new Person();//p1变量存在栈内存
p1.setName("张三");
p1.setAge(20);//在堆内存中开辟了一个空间存储对应的name=“张三”和age=20,然后将地址值赋给p1;
Person p2 = p1;//栈内存新建一个p2,将p1的地址值赋给了p2,使p2也指向了name=“张三”和age=20;
p2.setName("李四");
p2.setAge(40);//将“张三”和20,变成了“李四”和40。
System.out.println(p1.getName()+":"+p1.getAge());
System.out.println(p2.getName()+":"+p2.getAge());
//输出结果:李四:40,李四:40
}
}
class Person
{
private String name;
private int age;
public void setName(String name)
{
this.name = name;
}
public void setAge(int age)
{
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
|
|