Java 效率总结

1.避免建立没必要要的对象
    静态的初始化器,能够避免重复建立对象。
    
2.内存泄露
    a.对象过时。
    b.缓存。
    c.监听器和其它回调。
        监视工具:Heap剖析工具。
        
3.避免使用终结方法
    使用终结方法有一个很是严重的性能损失,因此才会出现池化技术,好比数据库池,线程池。
    显示终止方法:InputStream等文件流,try-finally结构。
4.尽可能使用equals代替“==”
    由于使用“==” 会检查参数是否为这个对象的引用。
    
    补充:使用instanceof操做符检查参数是否为正确的类型。
    检查是否为空:
  java

 (file == null ? o.filed == null : filed.equals(o.filed))


5.确保惟一
    覆盖equals时总要覆盖hashCodespring

6.使可变性最小数据库

    静态工厂也使得客户端间能够共享现有的实例,而不用建立新的实例。注意:static、final等关键词
    
7.复合优于继承缓存

    构造器不能调用可被覆盖的方法,不管是直接调用,仍是间接调用。ide

public class Supper{
        public Supper(){
        }
        public void ovverideMe(){
        }
    }
    
    
    public final class Sub extends Supper{
        private final Date date;
        Sub(){
            date = new Date();
        }
        public void ovverideMe(){
            System.out.println(date);
        }
        public static void main(String[] args){
            Sub sub = new Sub();
            sub.ovverideMe();
        }
    }

    你可能会期待这个程序会打印日期两次,可是它第一次打印的是null,由于ovverideMe方法被Supper构造器调用的时候,构造器Sub尚未机会初始化date域。
    
8.枚举类型
工具

    为了将数据与枚举类型常量关联起来,得声明实例域,并编写一个带有数据并将数据保存在域中的构造器。
    
    注意:枚举类型使用时一类的,而且数据量还不少,其它的可使用常量。
    好比:App中的错误码,不可能把每一个错误定义一个常量。尚未在springMVC中渲染的页面,也可使用枚举类型进行管理。

    
9.方法性能

    a.检查参数的有效性。
    b.慎用可变参数。
    
10.通用程序设计ui

    a.若是须要精确的答案,请避免使用float 和 double。
    货币单位,最明显的作法是以分单位计算,使用int和long。
    
    b.基本类型因为装箱基本类型。
    基本类型:int,long;装箱基本类型:Integer,Long.
    之间的区别:1.基本类型只有值,而装箱基本类型则具备与他们的值不一样的同一性。2.基本类型只有功能完备的值,而每一个装箱基本类型除了
    它对应基本类型的全部值以外,还有非功能值:null。3.基本类型比装箱基本类型更节省时间和空间。
    
    总结:1.装箱基本类型是类,类是能够为null,这是主要的区别。因此若是使用“==”判断,在Integer是有问题的。

        2.当在一项操做操做中混合使用基本类型和装箱基本类型时,装箱基本类型就会自动拆箱。
    
    c.小心字符串链接的功能。就是“+”
    可使用StringBuild代替String的“+”,或者使用StringBuffer。
    
    
11.异常spa

    a.优先使用经常使用异常。
    
    线程

相关文章
相关标签/搜索