class?Test{
int?x=3;
void?show?(){
System.out.println("x="+x);
}
}
public?class?java1{
public?static?void?main(String?[]?argv){
Test?a,b,c;
a=new?Test();
b=new?Test();
System.out.println("a==b?"+(a==b));//為什么這里顯示的結(jié)果是false呢?程序運(yùn)行到這里都是一樣數(shù)值啊!
c=b;//這里是吧b的值給c對吧?還是不是簡單地賦值而是別的呢?
c.x=10;??//不懂這里,按照道理應(yīng)該是c.show來使用方法,為啥要c.x呢???我原來慕課中也問過這個(gè)問題,別人給的答案
//是這里可以理解為調(diào)用,,因?yàn)閏是Test類的對象,故c既可以使用來調(diào)用Test類中的方法,也可以通過查看,修改Test類成員
變量的值,我還是沒有聽懂,不知為啥c就是Test類的對象呢?請大神給我解答解答,謝謝了!這里不懂,謝謝了,希望詳細(xì)給我講講!
System.out.println("c==b?"+(c==b));
System.out.print("a.");
a.show();
System.out.print("b.");
b.show();
System.out.print("c.");
c.show();
}
}
3 回答

Finit
TA貢獻(xiàn)222條經(jīng)驗(yàn) 獲得超80個(gè)贊
?c=b;是引用賦值,打印System.out.println(c==b);結(jié)果為true,即b、c指向同一內(nèi)存地址;既然是同一引用,所以b.show、c.show一樣;
然而:
?a=new?Test();
????????b=new?Test();
????????System.out.println("a==b?"+(a==b));
a、b為不同對象,不同存儲(chǔ)地址,即引用指向地址不同,a==b為FALSE。
望采納
添加回答
舉報(bào)
0/150
提交
取消