From eabddb975193bf2b1fcee93c94c6166defe7ebe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=95=E5=BC=BA?= Date: Thu, 22 Aug 2019 13:36:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=E9=94=99=E8=AF=AF?= 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 040ff93..3013bc6 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 实现上。 创建额外的对象以增强程序的清晰度,简单性或功能性通常是件好事。