2.3 状态图

鉴于 Java 用符号“=”来赋值,你可能会认为语句 a=b 是一个相等声明,但事实并非如此!

相等具有交换性,但赋值并非如此。例如,在数学中,如果 a=7,则 7=a;而在 Java 中,a=7; 是一条合法的赋值语句,但 7=a; 则不是,因为赋值语句的左边必须是变量名(存储位置)。

另外,在数学中,相等声明在任何情况下都成立。如果当前 a=b,那么在任何情况下 ab 都相等;而在 Java 中,赋值语句可能导致两个变量相等,但它们并不一定始终如此。

  1. int a = 5;
  2. int b = a; // 现在a和b相等
  3. a = 3; // a和b不再相等

第三行代码修改了 a 的值,但没有修改 b 的值,因此它们不再相等。

程序中的所有变量及其当前值一同组成了程序的状态(state)。图 2-1 显示了程序在上述三条语句运行后的状态。

{%}

图 2-1:变量 a 和 b 的状态图

显示程序状态的图被称为状态图(state diagram)。每个变量都用一个方框表示,方框内是变量的值,方框外是变量名。状态随程序的运行而变化,因此,应将状态图视为程序执行过程中特定时点的快照。