这一章主要讨论 Java 语言的基本要点,主要包括局部变量处理,控制流,类库的使用,数据类型的用法。另外还会讨论反射和本地方法这两种非语言的层面的机制。最后讨论了程序优化和命名惯例。

尽量缩小局部变量的范围

缩小局部变量的范围优势时:

  1. 增加代码的可读性;
  2. 增强代码的可维护性;
  3. 减少潜在的错误。

缩小局部变量最有效的手段是在第一次使用的时候声明变量,过早的声明局部变量可能会对代码的阅读者造成困惑,并且会导致局部变量过早的被初始化,使用完局部变量以后可能还会继续存在一段时间,这可能会对程序造成错误。

几乎每个局部变量都应该在使用前被初始化,当然在try-catch语句块内外都要使用的局部变量除外。

在循环中使用局部变量时,优先使用for循环而不是while循环,因为for循环中可以包含初始化语句,而while循环中使用的局部变量则只能在while语句之前初始化,这无疑扩大了局部变量的范围。

另外一个有效的手段时,尽量减少和聚焦方法的功能。

优先使用for-each循环而不是传统for循环

for-each循环相对于for循环更加简洁,并且出错的几率更小,因为这种方式不需要定义索引的局部变量。

for-each只是一种语法糖,它能遍历数组和实现了Iterable接口的类对象,而for-each的内部实现则时将其转换成for循环,所以相对于for循环没有性能损失。但是一下三种情况无法使用for-each

  1. 过滤元素,即要从集合中移除元素的情况,只能转换成迭代器进行迭代,再调用迭代器的remove方法;
  2. 替换元素,如果要将部分元素替换掉,那么必须迭代集合或者使用数组索引,以便获取元素的引用进行替换;
  3. 并行迭代,并行遍历多个集合,必须使用迭代器或者索引值定位到每个元素。