LocalDate对象创建数量分析问询
LocalDate对象创建数量分析问询
嗨,我来帮你梳理这段代码里创建的LocalDate对象数量,先划个关键重点:LocalDate是不可变对象——它的任何修改类方法(比如plusDays、minusMonths这类)都不会改变原有对象本身,而是会返回一个全新的LocalDate实例。咱们逐行拆解代码:
LocalDate d1 = LocalDate.now(); d1.plusDays(1); d1 = d1.minusMonths(2); LocalDate d2 = d1.plusWeeks(3); d2.minusDays(4); d2 = null;
- 第一行
LocalDate d1 = LocalDate.now();:调用now()直接创建了第1个LocalDate对象,并把引用赋值给d1。 - 第二行
d1.plusDays(1);:调用plusDays(1)生成了第2个新的LocalDate对象,但这个对象没有被任何变量引用,后续会被垃圾回收,但确实是创建出来了。 - 第三行
d1 = d1.minusMonths(2);:调用minusMonths(2)生成第3个新对象,之后把这个新对象的引用赋值给d1,原来d1指向的旧对象失去引用。 - 第四行
LocalDate d2 = d1.plusWeeks(3);:调用plusWeeks(3)生成第4个新对象,把引用赋值给d2。 - 第五行
d2.minusDays(4);:调用minusDays(4)生成第5个新对象,同样没有被引用,后续会被回收,但创建动作已经发生。 - 最后一行
d2 = null;:只是将d2的引用置为空,没有创建新对象。
所以这段代码总共创建了5个LocalDate对象,和你的预期完全一致!
备注:内容来源于stack exchange,提问作者user20301714
相关产品推荐
相关产品推荐

