编写代码的一些小细节,主要是性能方面的注意吧

1.字符串的拼接  ,  在编写代码时   为了方便 使用 +号去 拼接字符串,  会创建多余的对象,  应该使用StringBuffer 或 StringBuilder
2. 基本类型和封装类型:  基本类型 的运行效率要远远高 过 封装类型  ---  因为 封装类型在运算的时候 是要 拆包 成 基本类型的  运算完成还要 封包  ----  比较影响效率 -- 在没有特殊原因尽量使用基本类型。
3.静态方法要比抽象方法的运行效率高, 还可以避免只是要使用一个类的方法,并不会访问这个类的字段。而去创建一个没有必要的对象。
4.对类的常量,使用 static  final ,  可以使所有的常量在dex文件的初始化器的进行初始化,就避免了  在使用时采用字段搜索的方式。

    /**
     *   这里还是扯一下蛋,装个小13 
     *     /
    普通的常量 在jvm第一次加载class文件的时候,回去调用一个 <clinit>的方法 去对普通的常量赋值。
    而被final 修饰的常量 是不会去调用 <clinit>方法去赋值的  ,  原因就在于  final 的特殊性。


    大家一般会觉得  final 和 static 没有什么区别  ,一个是只是赋值一次, 一个可以多次赋值。我也怎么觉得,后来神经病发了,就发现:

    static 作用于成员变量 表示 保存了一份副本。 注意这个副本。
    final 作用于成员变量 表示 变量不可变。 

    我们都知道一件事, 副本是由于 替换值使用。
    final 代表  没有副本。  就不会 发生替换值的问题。 也就不会在初始化赋值。  这里 使用的是  初始化赋值。


    这就扯到另一个问题了,final 不可变的是什么?
    
    当含有final属性的类被加载进内存并且被实例化的时候,就会为这个final属性分配内存,同时必须对该属性进行初始化,之后不可变。也就是说如果是基本类型的,那么它的值不能再改变;如果是对象,则引用不可变,而对象本身还是可以改变的。 --- 《java编程思想》


    也就是static final 修饰的 常量  相当于  “123”;的概念。

     这样jvm  就不会采用字段搜索的方式去,初始化了。  而会采用相对轻量级的常量方式。


    忘了说 static 修饰的成员变量,的确是静态的  ,不过我们好像 很容易就忽略了 ,他还是变量的问题 ,是变量就一定会在类加载的时候,调用<clinit>方法去初始化赋值的。

    常量直接在 jvm加载class文件的时候,初始化完成了。
    
    
    感觉不会有人看的懂,我写这些鬼。。。。

    5.对使用的容器 的数据结构进行了解 ,  根据其数据结构的优缺点选择有效的容器实现 数据操作。
    6.在 for的()中 ,尽量不要调用方法,可以提升效率。
    
    《java编程思想》 一本看起有许多意思的书,可以看看。不知道写什么了,拜拜。
                                                                                                                                                                                                                                                                        ----- EndingWar


    结尾附上一首诗,来激励自己,细细去体会学习的快乐:
    
Seven times I have despised my soul
——Kahlil Gibran

第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。

你可能感兴趣的:(性能,优化,编码)