将局部变量的作用域最小化
-
要使局部变量最小化,最有力的方法就是在第一次使用它的地方声明
-
几乎每个局部变量的声明都应该包含一个初始化表达式
-
for循环优先于while循环
for-each循环优先于传统的for循环
for-each 循环可以遍历集合,数组,实现Iterable接口的对象
了解和使用类库
-
不要重新发明轮子
-
java.lang , java.util, java.io
如果需要精确的答案,请避免使用float和double
-
float和double尤其不适合用于货币计算
-
使用BidDecimal、int或者long进行货币计算
基本类型优先于基本装箱类型
-
对装箱基本类型运用==操作符几乎总是错误的
-
混合使用基本类型和装箱基本类型,就会自动拆箱。如果null对象拆箱,就会得到一个NullPointerException异常。
-
大的for循环中使用装箱基本类型,会导致大量的装箱拆箱,性能下降
-
集合中的元素、键、值应该使用装箱类型
-
在参数化类型中,必须使用装箱类型
-
反射的方法调用,必须使用装箱类型
如果其他类型更适合,则尽量避免使用字符串
-
字符串不适合代替其他的值类型
-
字符串不适合代替枚举类型
-
字符串也不适合代替能力表
当心字符串连接的性能
-
不要使用字符串连接操作符(+)合并多个字符串(大数组或者for循环),除非性能无关紧要。
-
为了获得可以接受的性能,请使用StringBuilder替代String
通过接口引用对象
-
如果有合适的接口类型存在,那么对于参数、返回值、变量和域来说,就都应该使用接口类型进行声明。
-
如果没有合适的接口存在,可以用类来引用对象
接口优先于反射机制
- 核心反射机制,提供了通过程序访问关于已装载的类的信息。反射的代价:
-
丧失了编译时类型检查的好处。
-
执行反射所需要的代码非常笨拙和冗长。
-
性能损失。
- 通常,普通应用程序在运行时不应该以反射方式访问对象
谨慎地使用本地方法
-
JNI允许Java应用程序可以调用本地方法。
-
使用本地方法来提供性能的做法不值得提倡。
谨慎地进行优化
-
优化的弊大于利,特别是不成熟的优化。
-
不要因为性能而牺牲合理的结构。要努力编写好的程序而不是快的程序。
-
努力避免那些限制性能的设计决策
-
要考虑API设计决策的性能后果
-
为获得好的性能而对API进行包装,这是一种非常不好的想法。
-
在每次视图做优化之前和之后,要对性能进行测试。
-
不要费力去编写快速的程序,应该努力编写好的程序,速度自然会随之而来。在设计系统的时候,特别是在设计API、线路层协议和永久数据格式的时候,一定要考虑性能的因素。
遵守普遍接受的命名惯例
- 类型参数:T表示任意类型,E表示集合的元素类型,K和V表示映射的键和值类型,X表示异常。序列可以是T、U、V
网友评论