避免创建不必要的对象

编程入门 行业动态 更新时间:2024-10-11 05:22:55

避免创建<a href=https://www.elefans.com/category/jswz/34/1646361.html style=不必要的对象"/>

避免创建不必要的对象

1、一般来说,最好能重用对象而不是每次需要的时候就创建一个功能相同的新对象

先看一个反例,如下所示:

String s = new String("No way");

该语句每次被执行都会创建一个新的String实例。传递给String构造器的参数"No way"本身就是一个String实例,功能方面等同于构造器创建的对象。如果被频繁调用,会创建成千上万不必要的String实例,加大开销。 

下面这是一个改进版本:

String s = "No way"; 

无须每次执行的时候都创建一个新的String实例,而且它可以保证,对于所有在同一台虚拟机中运行的代码,只要它们包含相同的字符串字面常量,该对象就会被重用。JVM中会有一个常量池,可以保存字符串常量,直接使用"No way"可以直接从常量池中返回对象,而不会重新创建新对象。

2、优先使用静态工厂方法而不是构造器 

特别说明:不可变类是指一旦一个类的对象被创建出来,在其整个生命周期中,它的成员变量就不能被修改。Java平台的类库中包含许多不可变的类,比如说String、基本类型的包装类(Integer)、BigInteger和BigDecimal。存在不可变的类有许多理由:不可变的类比可变的类更加容易设计、实现和使用,它们不容易出错,而且更加安全。

对于同时提供了静态工厂方法和构造器的不可变类,通常优先使用静态工厂方法而不是构造器,以避免创建不必要的对象。例如静态工厂方法Integer.valueOf(String)几乎总是优先于构造器Integer(String)。构造器在每次被调用的时候都会创建一个新的对象,而静态工厂方法则从来不要求这样做,实际上也不会这样做。

public class Demo {public static void main(String[] args) {// 使用带参构造器Integer a1 = new Integer("1");Integer a2 = new Integer("1");//使用valueOf()静态工厂方法

更多推荐

避免创建不必要的对象

本文发布于:2023-12-06 07:18:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1666843.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不必要   对象

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!