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