05.16 Java编程思想——避免创建不必要的对象

当你应该重用现有对象的时候,请不要创建新的对象

” 更多编程细节请关注我哦,欢迎点赞,欢迎转发

最为突出的例子莫过于字符串常量的创建,众所周知String字符串有两种创建方式:

Java编程思想——避免创建不必要的对象

第一种String字符串的创建是在方法区(JDK7后改到了堆内存)中的常量池中创建一个”hello”常量,将来若再有一个字符串变量为“hello”时将直接指向常量池中的“hello”变量而不用重新创建;

第二种则是会在堆变量中创建一个新的String实例,将来若再以此方式创建一个字符串变量为“hello”时还是会重新创建一个String实例。显然第二种方式创建了一个“不必要”的实例,相比较而言第一种方式更加高效。

另外一个例子则是将”true”变量转换为Boolean类型也有以下两种转换方式:

Java编程思想——避免创建不必要的对象

第一种转换方式也是每次都会在堆内存中创建一个新的Boolean实例;

第二种查看其源代码便知不会每次返回一个新的实例,返回的是一个在编译器就已经确定了的static final Boolean型变量:

Java编程思想——避免创建不必要的对象

一个例子是否是在1946年至1964年出生来说明,这个例子在现实当中也很常见:

Java编程思想——避免创建不必要的对象

 这样的代码我相信人人都写过类似的,书中提到这种代码的写法每次都创建新的实例对象,而实际上是不必要的,而给出了一种比较高效的代码示例:

Java编程思想——避免创建不必要的对象

利用静态代码块在类Person初始化的时候创建对象,而在之后调用方法判断时不再每次重新创建新的实例对象,这种写法有点“烧脑”,确实有点“不符合”编码习惯,大概是因为这是需要思考才能写出来的原因吧。

Java编程思想——避免创建不必要的对象


分享到:


相關文章: