`

第5条:避免创建不必要的对象

    博客分类:
  • java
阅读更多
看到这个标题就想起我以前一个同事,当时他在敲代码,我正好在他身边站的,他写一个函数,定义一个整数的count用来计数,
  Integer count=0;
我就和他说不需要用Integer类型,int就可以的。他回答我说都一样。怎么能一样呢?要是一样设计者为啥要弄出两个来呢?两个肯定是有区别的嘛。(凡事多问为什么)。
下面一个类似示例:
public static void main(String args[]){
    Long sum=0L;
    for(long i=0;i<Integer.MAX_VALUE; I++){

sum +=i;
}
System.out.println(sum);
}


这段代码是想计算所有int正值的总和,因此必须用long算法,但是把sum声明成Long而不是long,那程序就构造了大约2的31次方个多余的Long实例。
还有我们经常写代码时会犯类似错误,尤其是刚开始做做开发的:

public class PersonService{
    
    private PersionDao dao=new PersionDao();
    public void update(){
//……
      dao.update();
}

public void del(){
//……
      dao.del();
}

//但是这个类里面来由很多方法,它们就没有用到PersionDao这个实例 

}



在每次调用PersonService时都要创建PersionDao实例,如果调用update和del以外的方法时,那创建PersionDao的实例显然就的多余了,因为更不用不到这个实例。所以我习惯哪用那创建,采用就近原则。
分享到:
评论

相关推荐

    effective Java(第3版)各章节的中英文学习参考(已完成).zip

    5 条优先依赖注入而不是硬连线资源(依赖注入硬件连接资源)第 6 条避免创建不必要的对象(避免创建不必要的对象)第 7 项消除过时的对象引用(排除时的对象引用)第8条避免使用终结器和清除器(避免使用终结器和...

    数据库系统教学课件:第17讲基于对象的数据库.pptx

    嵌套关系允许在单个元组内表示复杂的结构,如书的作者和关键词可以直接作为元组的一部分,从而避免了冗余和不必要的连接操作。 二 SQL支持的复杂数据类型 SQL的标准版本(如SQL 1999和SQL 2003)提供了对复杂数据...

    Matlab面向对象编程

    通过抽象,我们可以忽略不必要的细节,只关注问题的关键部分。 2. 封装:封装是指隐藏对象的内部实现细节,只暴露操作接口供外界访问。在MATLAB中,通过类和对象实现封装。类定义了对象的属性和方法,而对象是类的...

    面向对象讲解

    这样可以保护数据的安全性,避免不必要的修改,同时提高了代码的可维护性和可重用性。 2. 继承:继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而减少了代码的重复,提高了代码的复用性。子类可以在...

    第五讲:单例模式

    5. 双重检查锁定(DCL,线程安全):在`instance`为null时才进行同步,减少了不必要的同步开销。 ```java public class Singleton { private volatile static Singleton instance; private Singleton() {} public...

    java设计 原则61条

    第23页强调了类之间关系的重要性,尤其是在定义继承关系时,必须清楚地认识到子类与父类之间的关系,以避免出现不必要的耦合。 **原则12:统一异常处理策略** 在第30页提到,整个系统应当采用一致的异常处理机制,...

    61条Java面向对象设计的经验原则.

    - **解释**:类的公有接口应该仅包含用户真正需要使用的功能,避免加入不必要的方法或属性,从而保持接口的清晰和简洁。 #### 原则七:低耦合 - **原则**:类之间应该零耦合,或者只有导出耦合关系。 - **解释**:...

    编写高效优雅Java程序.pdf

    1. **避免创建不必要的对象**:避免无意中创建的对象,比如自动装箱,以及在多个实例之间可以共享的成员变量,建议使用static关键字。 2. **对象池的使用**:对象池的使用应慎重,只在创建对象非常昂贵的情况下(如...

    学习javascript面向对象 掌握创建对象的9种方式

    这样做可以减少不必要的输入,同时在视觉上更好地封装原型的功能。 以上介绍了JavaScript中创建对象的前六种方式。后续还有几种方式,但本文中未提及。读者可以继续探索其他创建对象的方式,如组合使用构造函数模式...

    面向对象c++题库 答案

    - **抽象性**:指从现实世界中提取出对象的主要特征,忽略不必要的细节。例如,当我们讨论汽车时,关注的是它的颜色、品牌和速度等特性,而不是其制造过程。 - **封装性**:将数据和对数据的操作绑定在一起,并对...

    MATLAB源程序代码分享:MATLAB实现组对象的整体几何变换

    MATLAB提供了图形对象句柄和面向对象的编程特性,通过合理管理对象和变换,可以避免不必要的计算,提高代码运行速度。 通过理解并掌握这些知识点,你将能够利用MATLAB实现复杂且高效的几何变换,无论是对单个对象...

    Flash-性能优化

    - **不必要的网络操作**:避免不必要的网络请求,减少带宽使用和等待时间。 #### 第六章:处理媒体 - **视频和音频**:优化视频和音频处理,提高播放质量和流畅度,减少卡顿。 #### 第七章:SQL数据库性能 - **...

    JS对象与数组参考大全

    在处理大型数据结构时,理解对象和数组的内部工作原理至关重要,例如,避免不必要的遍历,合理使用引用和深拷贝,以及利用`Map`和`Set`等数据结构提高性能。 以上是JS对象与数组的基本概念和常用方法,掌握这些知识...

    面向对象设计经验

    过早优化往往会带来复杂性和不必要的开销,反而降低了代码的可读性和可维护性。 ### 8. 明确类与对象的职责 - 类和对象应该具有明确的职责,避免职责混淆。如第31条原则:“在创建类时,类的职责应该是明确的。”...

    Visual.C++面向对象与可视化程序设计(第2版)

    9. **性能优化**:探讨C++和MFC中的性能优化策略,如减少内存分配、避免不必要的对象复制等。 10. **实践项目**:通过实例项目将所学知识应用于实际,提升编程技能。 书中的"更多免费资源编程教程.url"可能是指向...

    JVM下篇:性能监控与调优篇.7z

    - **优化代码**:减少不必要的对象创建,避免内存泄漏,使用有效的数据结构和算法。 - **监控与调整JVM参数**:根据实际运行情况动态调整,如调整新生代和老年代的大小。 7. **JVM诊断工具**: - `jmap`:获取堆...

    教你10天学会asp

    2. 代码优化:避免不必要的计算,减少脚本运行时间。 **第十天:实战项目** 1. 创建一个简单的登录注册系统:通过ASP实现用户注册、登录、数据验证等功能。 2. 数据展示:从数据库获取数据,动态生成表格或图表。 ...

    vs2008下C++对象内存布局

    - 合理规划数据结构,避免不必要的对齐开销。 - 尽量减少动态内存分配,尤其是在循环中,考虑使用容器(如`std::vector`)或预分配内存。 - 使用智能指针(如`std::unique_ptr`或`std::shared_ptr`)管理动态内存...

Global site tag (gtag.js) - Google Analytics