避免创建不必要的对象(Effective Java第5条)

避免创建不必要的对象,这一条告诉我们,要尽可能的重用对象。书中举了几个例子来讲解一些无意识的创建不必要的对象的情况。

1. String类的使用

String str = new String("abc");

上面这条代码执行过后,会生成两个对象,参数”abc”本身就是一个String对象,new String()又会产生新的String对象。

正确的做法如下:

String str = "abc";

无论这条语句执行多少次,对象只会有一个。

2. 自动装箱机制

long sum = 0L;
long start = System.currentTimeMillis();
for (int i = 0; i< Integer.MAX_VALUE; i++) {
    sum += i;
}
long end = System.currentTimeMillis();

System.out.println(sum + " 用时: " + (end - start) + "ms");

上面这段代码在我电脑的执行时间大概是600ms。

Long sum = 0L;
long start = System.currentTimeMillis();
for (int i = 0; i< Integer.MAX_VALUE; i++) {
    sum += i;
}
long end = System.currentTimeMillis();

System.out.println(sum + " 用时: " + (end - start) + "ms");

上面这段代码在我电脑的执行时间大概是15S。

相差这么多的原因只是因为下面的代码中使用了Long而不是long,这意味着每次相加完赋给sum一个新值时,都会生成一个新的Long对象,使用Long比使用long多生成了2^31个对象。

3. 方法内重复创建常量对象

情况就是一个方法每次被调用都会生成一些新的但值永远一模一样的对象。解决方法就是把这些常量对象作为类变量,然后在static语句内初始化,方法被调用时,就不需要每次都生成新对象了。

原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/100

(1)
geekgaogeekgao博主
上一篇 2018年1月31日
下一篇 2018年3月12日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

GitHub
分享本页
返回顶部

Warning: error_log(/usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/#log/log-2117.txt): failed to open stream: No such file or directory in /usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/spider.class.php on line 2900