先定義一個(gè)Person類(lèi)

public class Person {

String name;

int age;

void say(){

System.out.println("姓名:"+name+" 年齡"+age);

}

}

public class Demo01 {

public static void main(String[] args) {

Person p1=new Person();

Person p2=null;

p2=p1;

p1.name="張三";

p1.age=50;

p2.name="李四";

p2.age=80;

p1.say();

p2.say();

}

}

輸出結(jié)果為:

1

原因?yàn)椋簣?zhí)行p2=p1,p1的值賦給p2,p2先斷開(kāi)其剛才在堆內(nèi)存中開(kāi)辟空間的連接,再p2與p1所開(kāi)辟的空間連接 ,p1、p2指向堆內(nèi)存中的同一個(gè)空間,然后p2設(shè)置新值,覆蓋原值。畫(huà)圖表示為:

4

 

 

public class Demo01 {

public static void main(String[] args) {

Person p1=new Person();

Person p2=null;

p2=p1;

p1.name="張三";

p1.age=50;

p1.say();

p2.name="李四";

p2.age=80;

p2.say();

}

}

輸出結(jié)果為:

 

2

程序中先執(zhí)行p2=p1,p1的值賦給p2,p2先斷開(kāi)其剛才在堆內(nèi)存中開(kāi)辟空間的連接,再p2與p1所開(kāi)辟的空間連接,p1、p2指向堆內(nèi)存中的同一個(gè)空間。

執(zhí)行p1.say(),輸出張三的信息。

5

P2設(shè)置新值,覆蓋原值,再執(zhí)行p2.say()輸出李四的信息

7