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