避免创建不必要的对象和避免使用终结方法

避免创建不必要的对象

1. String s = "123";

而不用String s = new String("123");

因为JVM中会有一个常量池,可以保存字符串常量,直接使用"123"可以直接从常量池中返回对象,而不会重新创建新对象


更加详细的说明:http://jiangzhengjun.iteye.com/blog/577039


2. 用valueOf()代替new Integer("1")

public static void main(String[] args) {
		Integer i1 = new Integer("1");
		Integer i2 = new Integer("1");
		Integer i3 = Integer.valueOf("1");
		Integer i4 = Integer.valueOf("1");
		System.out.println(i1 == i2);
		System.out.println(i3 == i4);
	}
会输出:

false
true

可以见用valueOf不会新建一个对象,实际上很多类默认的valueOf方法都不会返回一个新的实例

3. fianl 一个公用的变量

比如下面有一个比较一个日期集是否在2000年之前的方法:

public class Singleton implements Cloneable{
	public void printDateIsBefor2000(List<Calendar> days){
		Calendar c = Calendar.getInstance();
		c.set(2000, Calendar.JANUARY, 1);
		for (Calendar d : days) {
			System.out.println(c.after(d));
		}
	}
}
Calendar c = Calendar.getInstance();
将会被创建很多次, 他可以认为是一个常量,因此可以按照如下的方式来写:

public class Singleton implements Cloneable{
	private final static Calendar LIANGQIAN;
	
	static{
		LIANGQIAN = Calendar.getInstance();
		LIANGQIAN.set(2000, Calendar.JANUARY, 1);
	}
	
	public void printDateIsBefor2000(List<Calendar> days){
		for (Calendar d : days) {
			System.out.println(LIANGQIAN.after(d));
		}
	}
}
就能很大的提升效率

4. 使用视图类的方法

比如Map的keySet将会返回一个已经存在的keySet并不会返回拷贝,或者重新创建一个


5. 减少自动装填

Java的int等类型会进行自动装填,特别实在循环调用的时候,我们应该优先使用基本类型。


最后,并不是一定不要创建新的对象,JVM现代虚拟机对于小对象的回收非常快,如果频繁使用小对象可以大大增加程序的简洁性和可读性的话也是很应该使用的。


避免使用finallze方法

这个主要是因为效率的问题。

使用了finallze方法会增加垃圾回收的时间。

通常只有在用于调用native方法的析构函数的时候才会使用。

建议如果需要有资源释放等等after类的操作,可以采用提供终结方法然后try catch finally的方式。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值