《Effective Java读书笔记》--通用程序设计

久未见 提交于 2019-11-30 02:57:48

将局部变量作用域最小化

最有力的技术是在第一次使用它时声明,并把它初始化。
如下代码分别用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)来提高程序性能的做法不值得提倡。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!