将局部变量作用域最小化
最有力的技术是在第一次使用它时声明,并把它初始化。
如下代码分别用for和while对lst数组做了两次遍历。大家可以想想,
for和while哪种写法更优呢?
public class Test {
public static void main(String[] args) {
int[] lst = { 1, 2, 3, 4 };
for (int i = 0; i < lst.length; i++) {
System.out.println(lst[i]);
}
for (int i = 0; i < lst.length; i++) {
System.out.println(lst[i]);
}
int i = 0;
while (i < lst.length) {
System.out.println(lst[i]);
i++;
}
i = 0; // 如果漏了这句,将导致一个bug。
while (i < lst.length) {
System.out.println(lst[i]);
i++;
}
}
}
for比while更好,原因如下:
- for的变量i只在for循环内有效,而while采用的i作用域更大。
- 正由于while语句中的计数变量i的作用域更大,所以写第二个while循环,漏掉了i的初始化,也能编译通过,但是产生了bug!!!而采用for语句,漏掉了i的定义,是不能通过编译的。
- for的代码更短
如果要求精确的答案,避免使用float和double
如果处理的数值不大并且不介意自己处理十进制小数点的话,采用int或者long。如果数字很大,你就必须使用BigDecimal。
通过接口引用对象:
比如:
List sub = new Vector();
//Vector sub = new Vector(); 不建议
采用接口引用对象,会使程序更加灵活。比如sub采用了另一种实现的话,只需改构造方法就行:
List sub = new ArrayList();
简而言之,如果接口的功能能够满足计算的要求,就用接口来引用对象;如果不是,则使用类层次结构中提供所需功能的最高层次的类。
使用本地方法(JNI)来提高程序性能的做法不值得提倡。
来源:oschina
链接:https://my.oschina.net/u/1453800/blog/263040