避免创建不必要的对象(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语句内初始化,方法被调用时,就不需要每次都生成新对象了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值