4.4 执行流程

将 4.3 节中的代码组合起来可以得到类似于下面这样的完整程序:

  1. public class NewLine {
  2. public static void newLine() {
  3. System.out.println();
  4. }
  5. public static void threeLine() {
  6. newLine();
  7. newLine();
  8. newLine();
  9. }
  10. public static void main(String[] args) {
  11. System.out.println("First line.");
  12. threeLine();
  13. System.out.println("Second line.");
  14. }
  15. }

阅读包含多个方法的类定义时,你可能很想按照从头到尾的顺序阅读。但这样做很可能让你感到迷惑,因为程序的执行流程(flow of excution)并不是这样的。

不管 main 方法位于源代码文件的什么地方,程序总是从这个方法的第一条语句开始执行。语句按顺序以每次一条的方式执行,直到遇到方法调用。我们可将方法调用视为改道:不是直接执行下一条语句,而是跳转到被调用的方法的第一行,执行完这个方法的全部语句后,再回到离开的地方继续执行。

这好像很简单,但别忘了,一个方法可以调用另一个方法。执行 main 方法时,中途离开去执行 threeLine 的语句;执行 threeLine 时,又中途离开去执行 newLine;而 newLine 调用 println,导致再次改道。

好在 Java 擅于跟踪当前的运行方法,因此,println 执行完毕后,它会回到离开 newLine 的地方;newLine 执行完毕后,回到离开 threeLine 的地方;而 threeLine 执行完毕后,又回到离开 main 的地方。

总之,阅读程序时,不要按照从头到尾的顺序阅读,而应按执行流程阅读。