您的位置:首页 > 编程语言

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

2016-05-06 16:24 435 查看
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

第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: