求解這段代碼打印結(jié)果
//外部類(lèi)
public?class?HelloWorld?{
????private?String?name?=?"愛(ài)慕課";
????//?外部類(lèi)中的show方法
????public?void?show()?{
????????//?定義方法內(nèi)部類(lèi)
????????class?MInner?{
????????????int?score?=?83;
????????????public?int?getScore()?{
????????????????return?score?+?10;
????????????}
????????}
????????//?創(chuàng)建方法內(nèi)部類(lèi)的對(duì)象
????????MInner?newScore?=?new?MInner();
????????//?調(diào)用內(nèi)部類(lèi)的方法
???????newScore.getScore();
????????System.out.println("姓名:"?+?name?+?"\n加分后的成績(jī):"?+?newScore);
????}
????//?測(cè)試方法內(nèi)部類(lèi)
????public?static?void?main(String[]?args)?{
????????//?創(chuàng)建外部類(lèi)的對(duì)象
????????HelloWorld?mo?=?new?HelloWorld();
????????//?調(diào)用外部類(lèi)的方法
????????mo.show();
????}
}結(jié)果是:
姓名:愛(ài)慕課
加分后的成績(jī):HelloWorld$1MInner@1540e19d
我知道代碼寫(xiě)錯(cuò)了,奇怪的是后面輸出的@1540e19d,似乎再不同的IDE不一樣
2017-12-26
? 不太懂你想表達(dá)的意識(shí)。如果你是想問(wèn)@1540e19d這里每次都輸出不同,那么我猜測(cè)可能是因?yàn)槟愕姆椒ㄊ莚eturn一個(gè)值,但這個(gè)值你沒(méi)有手動(dòng)賦予它存儲(chǔ)空間,它就系統(tǒng)自動(dòng)存放,因此可能會(huì)不一樣。
可以嘗試手動(dòng)定義變量,給他賦值后用指針查看空間地址。然后比對(duì)一下應(yīng)該就知道是不是上述猜想了。
2017-12-26
不好意思,我看錯(cuò)問(wèn)題了。我的想法是,換了一個(gè)ide,應(yīng)該又重新new一個(gè)MInner,內(nèi)存就會(huì)給newScore重新分配一個(gè)地址。我試了一下,同一個(gè)ide輸出的地址是相同的。
2017-12-26
你在調(diào)用內(nèi)部類(lèi)的方法時(shí),輸出的是newScore (是一個(gè)對(duì)象,最后得到的是它的存儲(chǔ)地址),如果你想得到93這個(gè)結(jié)果,你需要聲明一個(gè)int型的變量(我這里面是s),再把?newScore.getScore() 的結(jié)果賦給變量s(也就是 ? ? int?s?=?newScore.getScore() ),最后輸出s (這才是個(gè)整型變量)。
2017-12-26
//外部類(lèi) public?class?HelloWorld?{ ? ????private?String?name?=?"愛(ài)慕課"; ? ????//?外部類(lèi)中的show方法 ????public?void?show()?{ ????????//?定義方法內(nèi)部類(lèi) ????????class?MInner?{ ????????????int?score?=?83; ? ????????????public?int?getScore()?{ ????????????????return?score?+?10; ????????????} ????????} ? ????????//?創(chuàng)建方法內(nèi)部類(lèi)的對(duì)象 ????????MInner?newScore?=?new?MInner(); ? ????????//?調(diào)用內(nèi)部類(lèi)的方法 ???????int?s?=?newScore.getScore(); ???????? ? ????????System.out.println("姓名:"?+?name?+?"\n加分后的成績(jī):"?+?s); ????} ? ????//?測(cè)試方法內(nèi)部類(lèi) ????public?static?void?main(String[]?args)?{ ? ????????//?創(chuàng)建外部類(lèi)的對(duì)象 ????????HelloWorld?mo?=?new?HelloWorld(); ? ????????//?調(diào)用外部類(lèi)的方法 ????????mo.show(); ????} }