5 避免创建不必要的对象
一般来说,最好能重用对象而不是在每次需要的时候就创建一个相同功能的新对象。重用的方式即快速,又流程。如果对象是不可变的,他就始终可以被重用。
- 对于只需要实例化一次的对象,可以使用静态初始化器。static{}
- 优先使用基本类型而不是装箱基本类型(基本类型:long; 装箱基本类型:Long)
public static void main(String[] args) {
//使用Long 时,每次sum增加long时都要构造一个实例
//耗时:Long 43秒,long 6.8秒
//Long sum = new Long(0);
long sum1 = 0L;
int i;
for ( i = 0; i < Long.MAX_VALUE; i++){
sum1 += 1;
}
}
例1:
String s = new String("string");
每次执行的时候都会创建一个新的String 实例。
改进:
String s = "string";
例2:
List list = new ArrayList();
改进:
先声明对象,当需要使用时才会创建实例。可反复使用。
List list;
list = new ArrayList();
分享到:
相关推荐
这可以减少实例化的次数,避免创建不必要的重复对象。 - 静态工厂方法可以返回任何子类型的对象,提供更大的灵活性。API可以返回对象而无需公开实现类,从而保持接口的简洁性。 - 在Java 8之前,接口不能有静态方法...
1. 保持POM文件整洁,避免引入不必要的依赖。 2. 使用Maven Profiles适应不同的构建环境。 3. 定期更新Maven,以获取最新的特性、修复和安全更新。 总的来说,Apache Maven 3.6.3是一个强大且广泛使用的工具,它...
- 保持代码简洁,避免不必要的复杂度。 - 编写可测试的代码。 #### 四、代码示例 **Example.java** ```java package com.example; public class Example { private String message; public Example(String ...
6. **避免不必要的对象创建**:对象创建有开销,所以应该尽可能减少不必要的对象,例如使用`String`常量池,避免使用`new`关键字。 7. **终结方法与清理器**:Java中的`finalize`方法往往不推荐使用,因为它不能保证...
java7 hashmap源码 Effective Java 3th 索引 创建和销毁对象 考虑使用静态工厂方法代替构造方法 优点: 有名字 每次调用的时候,不一定要创建新的...避免创建不必要的对象 用 String str = "abcd";而不是String str= n
**避免创建不必要的对象**: 1. **不可变对象**:对于不可变对象,可以通过缓存已创建的对象来避免重复创建。 2. **使用静态工厂方法**:如果一个类既提供了静态工厂方法也提供了构造器,则通常推荐使用静态工厂...
- **避免在循环体中创建对象**:循环内的对象创建可能会导致不必要的性能开销。 - **了解JVM内存模型**:理解堆、栈、方法区等概念,有助于进行性能调优。 - **使用StringBuilder(或StringBuffer)**:在构建...
- **避免对对象的不必要的复制**:了解如何最小化对象复制,例如通过使用`System.arraycopy()`或`Arrays.copyOf()`。 - **正确使用equals()和hashCode()**:理解这两者的性能影响,特别是在集合类中。 9. **最后...
21. 避免创建不必要的对象。 22. 使用System.arraycopy()方法复制数组。 23. 对于可序列化类,明确指定serialVersionUID。 以上就是基于“Java学习总结(2023/03/19)”的主题,结合《Effective Java》一书,对Java...
11. **优先使用Arrays.asList()而不是new ArrayList()**:前者将数组转换为列表,而后者创建了一个新的列表,前者更高效且避免了创建不必要的对象。 12. **使用迭代器而非for-each循环遍历集合**:两者都能遍历集合...
11. **使用`String`构造函数创建字符串,而不是`new String()`(Item 11)**:直接使用`String`构造函数更高效,因为字符串是不可变的,避免了不必要的内存分配。 12. **避免在循环中使用`System.arraycopy()`...
- 避免不必要的对象创建,尤其是String对象,注意字符串连接的效率问题。 - 使用StringBuilder代替String的+操作进行字符串拼接。 - 利用局部变量缓存常量,避免频繁的属性访问。 8. 错误处理 - 不要忽视异常,...
了解`Long`和`Integer`的缓存机制可以帮助避免不必要的对象创建,提高性能。 #### 五、总结 在Java开发中,正确地比较`Long`和`Integer`对象是非常重要的。直接使用`==`可能会导致意料之外的结果。通过使用`equals...
- **项02:避免创建不必要的对象**:过度创建对象会增加内存负担,应该尽可能重用现有对象或采用更高效的替代方案。 - **项03:覆盖equals时请遵守通用约定**:正确的equals方法实现对于确保对象一致性至关重要。 #...
避免不必要的对象创建 德玛 项目7 释放使用的对象参考 莉娜 项目8 避免使用终结剂和清洁剂 莉娜 项目9 使用try-with-resources而不是try-finally 林 第三章所有对象的通用方法 项目编号 标题 副标题 经理 项目...
因此,循环检查条件并在满足时调用`wait()`是标准做法,这有助于避免不必要的唤醒和提高效率。在`Effective Java`一书中,作者对此有详细的解释。 总的来说,`volatile`关键字在Java多线程编程中扮演着重要的角色,...
4. **优先考虑静态工厂方法而非构造器**: 静态工厂方法有多个优势,例如可以有选择性地返回子类实例、不需暴露构造器、在无参数情况下避免创建不必要的对象等。 5. **使用不可变对象**: 不可变对象一旦创建完成,其...
饿汉式在类加载时就完成了实例化,确保了线程安全,但可能会造成不必要的内存浪费。`SingleInstance2.java`可能就使用了这种模式。代码中单例对象在类加载时即被创建。 ```java public class SingleInstance2 { ...