45.将局部变量的作用域最小化
每一个局部变量几乎都需要一个初始化表达式
for 循环优先于 while 循环
46. for each 循环优先于传统的 for 循环
47.了解和使用类库
java.util java.lang java.io
48.如果需要精确计算,不要使用 float 与 double
float 与 double 尤其不适合于货币计算
如果数值范围不超过9位使用 int 不超过18位使用 long 否则使用 Bigdecimal
49.基本类型优先于封装类型
自动封装减少了使用封装类型的繁琐操作,但并没有减少它的风险,封装类型需要注意 null 异常
50.如果其他类型更加适合,避免使用字符串
字符串不适合代替其他类型
字符串不适合代替枚举类型
字符串不适合代替聚集类型
字符串不适合代替能力表
51.当心字符串连接的性能
为连接 n 个字符串而重复使用字符串连接操作符,需要n 的平方级的时间,这是由于字符串不可变,当两个字符串放在一起时,它们的内容都需要拷贝,请使用 StringBuilder 来代替 String
52.通过接口引用对象
使用接口作为类型的习惯,程序会更加灵活
如果没有合适的接口,完全可以用类而不是接口来引用对象
53.接口优先于反射机制
java.lang.reflect 提供了通过程序来访问关于已转载类的信息的能力
但使用反射 丧失了编译时类型检查的好处 执行反射的代码非常笨拙 损失性能
通常普通方法在运行时不应该以反射方式访问对象
如果以有限形式使用反射机制,虽然夜壶付出代价,但是可以获取许多好处
54.谨慎的使用本地方法
使用本地方法来提高性能的方法不值得提倡
55.谨慎的进行优化
要努力编写好的程序而不是快的程序
好的程序体现了信息隐藏的原则
努力避免那些限制性能的设计决策
要考虑api 设计决策的性能后果
为获取好的性能对api 进行包装,这是一种非常不好的想法,api 性能可能在下个版本中就不存在,但被包装的 api以及由它引起的问题会一直困扰着你
56.遵守普遍接受的命名惯例