为了账号安全,请及时绑定邮箱和手机立即绑定

在构造方法初始化和在属性直接赋值有何不同?

在构造方法初始化和在属性直接赋值有何不同?

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 关注
  • 2071 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信