From 1d1dfe51bb6feceb6a04af94a1e7fa35f4af4e8e Mon Sep 17 00:00:00 2001 From: sjsdfg <736777445@qq.com> Date: Fri, 5 Apr 2019 17:01:09 +0800 Subject: [PATCH] =?UTF-8?q?6.=20=E9=81=BF=E5=85=8D=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/notes/06. 避免创建不必要的对象.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/notes/06. 避免创建不必要的对象.md b/docs/notes/06. 避免创建不必要的对象.md index 9ce64fa..aee5716 100644 --- a/docs/notes/06. 避免创建不必要的对象.md +++ b/docs/notes/06. 避免创建不必要的对象.md @@ -68,7 +68,7 @@ private static long sum() { } ``` -  这个程序的结果是正确的,但由于写错了一个字符,运行的结果要比实际慢很多。变量 `sum` 被声明成了 `Long` 而不是 `long`,这意味着程序构造了大约 231 不必要的 `Long` 实例(大约每次往 `Long` 类型的 `sum` 变量中增加一个 `long` 类型构造的实例),把 `sum` 变量的类型由 `Long` 改为 `long`,在我的机器上运行时间从 6.3 秒降低到 0.59 秒。这个教训很明显:优先使用基本类型而不是装箱的基本类型,也要注意无意识的自动装箱。 +  这个程序的结果是正确的,但由于写错了一个字符,运行的结果要比实际慢很多。变量 `sum` 被声明成了 `Long` 而不是 `long`,这意味着程序构造了大约 231 不必要的 `Long` 实例(大约每次往 `Long` 类型的 `sum` 变量中增加一个 `long` 类型构造的实例),把 `sum` 变量的类型由 `Long` 改为 `long`,在我的机器上运行时间从 6.3 秒降低到 0.59 秒。这个教训很明显:**优先使用基本类型而不是装箱的基本类型,也要注意无意识的自动装箱。**   这个条目不应该被误解为暗示对象创建是昂贵的,应该避免创建对象。 相反,使用构造方法创建和回收小的对象是非常廉价,构造方法只会做很少的显示工作,尤其是在现代 JVM 实现上。 创建额外的对象以增强程序的清晰度,简单性或功能性通常是件好事。