创建和销毁对象——避免创建不必要的对象——重用不可变对象(摘自Effective java)
2015-10-22 14:44
489 查看
一般来说,最好能重用对象而不是在每次需要的时候就创建一个相同功能的新队想。如果对象是不可变的,它就始终可以被重用。
作为一个极端的反面例子:
String s = new String("test"); // Don't do this
该语句每次被执行的时候都创建一个新的String实例,当这些创建对象的动作全都是不必要的。传递给String构造器的参数("test")本身就是一个String实例;功能方面等同于构造器创建的所有对象。如果这种方法是在一个循环中,或者是在一个被频繁调用的方法中,就会创建出成千上万不必要的String实例。
改进后的版本:
String s = "test";
这个版本只用了一个String实例,而不是每次执行的时候都创建一个新的实例。而且,它可以保证,对于所有在同一台虚拟机中运行的代码,只要它们包含相同的字符串常量,该对象就会被重用。
作为一个极端的反面例子:
String s = new String("test"); // Don't do this
该语句每次被执行的时候都创建一个新的String实例,当这些创建对象的动作全都是不必要的。传递给String构造器的参数("test")本身就是一个String实例;功能方面等同于构造器创建的所有对象。如果这种方法是在一个循环中,或者是在一个被频繁调用的方法中,就会创建出成千上万不必要的String实例。
改进后的版本:
String s = "test";
这个版本只用了一个String实例,而不是每次执行的时候都创建一个新的实例。而且,它可以保证,对于所有在同一台虚拟机中运行的代码,只要它们包含相同的字符串常量,该对象就会被重用。
相关文章推荐
- Node之remove and clean
- jquery 实时计算用户输入的字数
- Node.js中的Mongoose实用笔记
- WEB开发时常用的正则表达式(PHP和Javascript)
- AngularJS PhoneCat代码分析
- HTML5中meta属性的应用
- 前端的发展前景
- CSS之position用法测试归纳
- 自定义checkbox 样式
- javascript/jquery解析XML带namespace的标签
- Gulp压缩前端CS,JS,图片文件
- (四)seajs.config中vars、alias、paths和map的作用,以及util-path路径解析源码
- js控制文本框输入的内容为(数字、字母、汉字)(二、js在函数中实现)
- jquery form 表单插件的使用
- 【读书笔记】HTML5程序设计 --- 第一章 HTML5 概述
- CSS3部分新特性
- 使用jquery插件qrcode生成二维码
- js正则表达式 匹配两个特定字符间的内容
- js父子页面模态窗口传值
- SharePoint 2013 IT Professional--Managed path