亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在構造方法初始化和在屬性直接賦值有何不同?

在構造方法初始化和在屬性直接賦值有何不同?

qq_殺意隆_0 2018-05-16 14:49:00
上圖是教程的寫法,如果如下這樣寫有何不同??private?HashMap<Items,?Integer>?goods?=?new?HashMap<Items,?Integer>(); ?private?double?totalPrice?=?0.0;
查看完整描述

2 回答

?
liyanlong

TA貢獻2條經驗 獲得超0個贊

在Cart()中賦值能起到懶加載的作用,也就是當你創建對象時才會賦值,直接賦值是加載器在加載這個類時就賦值了,相對來說你的寫法比較耗內存,但還是要看需求,不同需求下根據性能情況不同,會用到不同的寫法。

查看完整回答
反對 回復 2018-05-16
  • qq_殺意隆_0
    qq_殺意隆_0
    為何我的寫法更耗內存? 類應該是只加載一次吧,但是對象可能實例化多次
?
千山暮雪CN

TA貢獻9條經驗 獲得超3個贊

在構造方法里面就進行初始化的作用是:當在其他的地方new一個Cart對象是,就會實例化(初始化)這個hashmap。

如果是按照你的方法寫:new完對象,調用響應的方法/變量時才回初始化(實例化)你定義的hashmap。

查看完整回答
反對 回復 2018-05-16
  • qq_殺意隆_0
    qq_殺意隆_0
    怎樣證明:調用響應的方法/變量時才回初始化(實例化)你定義的hashmap。
  • 千山暮雪CN
    千山暮雪CN
    你在構造方法里面添加一條輸出語句,就輸出test1吧,在你要調用的方法里面添加一條輸出語句,輸出test2,你看你new對象時會不會輸出test1,而不會輸出test2。在你調用你要調用的方法時會輸出test2,但是test1會在test2之前輸出。 這是最簡單的測試的方法,你還可以debug去查看運行步驟,看那個先被實例化
  • 2 回答
  • 0 關注
  • 2112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號