现在您已经了解了变量和运算符,是时候了解表达式语句块了。运算符可用于构建表达式,这些表达式可计算值。表达式是语句的核心组成部分;语句可以分为多个块。

表达式

一个表达式是变量,运算符和方法调用组成的构造体,它们根据语言的语法构造,计算结果为单个值。您已经看过表达式的示例,下面以粗体显示:
int **cadence = 0**;
**anArray[0] = 100**;
System.out.println(**"Element 1 at index 0: " + anArray[0]**);
int **result = 1 + 2**; // result is now 3
if (**value1 == value2**)
System.out.println(**"value1 == value2"**);
表达式返回值的数据类型取决于表达式中使用的元素。该表达式cadence = 0返回一个int,因为赋值运算符返回的数据类型与其左侧操作数相同;在这种情况下,cadenceint。从其他表达式中可以看到,表达式也可以返回其他类型的值,例如booleanString
Java编程语言允许您从各种较小的表达式中构造复合表达式,只要该表达式的一部分所需的数据类型与另一表达式的数据类型匹配即可。这是一个复合表达式的示例:

  1. 1 * 2 * 3

在此特定示例中,计算表达式的顺序并不重要,因为乘法结果与顺序无关。无论您以何种顺序应用乘法,结果始终是相同的。但是,并非所有表达式都正确。例如,以下表达式根据您首先执行加法还是除法运算得出不同的结果:

  1. x + y / 100 // ambiguous

您可以精确地指定如何使用圆括号(和)对表达式求值。例如,要使上一个表达式明确,可以编写以下代码:

  1. (x + y) / 100 // unambiguous, recommended

如果未明确指出要执行的操作的顺序,则该顺序由分配给表达式中使用的运算符的优先级确定。优先级较高的运算符将首先求值。例如,除法运算符的优先级比加法运算符的优先级高。因此,以下两个语句是等效的:

  1. x + y / 100
  2. x + (y / 100) // unambiguous, recommended

编写复合表达式时,应明确并用括号指出哪个运算符应首先求值。这种做法使代码更易于阅读和维护。

语句

陈述大致相当于自然语言中的句子。一条语句构成了完整的执行单元。通过使用分号(;)终止表达式,可以将以下类型的表达式制成语句。

  • 赋值表达式
  • 任何使用++--
  • 方法调用
  • 对象创建表达式

这样的语句称为表达式语句。这是一些表达式语句的例子。

  1. // assignment statement
  2. aValue = 8933.234;
  3. // increment statement
  4. aValue++;
  5. // method invocation statement
  6. System.out.println("Hello World!");
  7. // object creation statement
  8. Bicycle myBike = new Bicycle();

除表达式语句外,还有两种其他语句:声明语句控制流语句。一个声明语句声明一个变量。您已经看到了许多声明语句的示例:

  1. // declaration statement
  2. double aValue = 8933.234;

最后,控制流语句控制语句执行的顺序。您将在下一节 流程控制语句了解控制流语句。

是一组花括号之间的零个或多个语句,并且可以在任何地方使用单个语句,这是允许的。以下示例 BlockDemo说明了块的使用:

  1. class BlockDemo {
  2. public static void main(String[] args) {
  3. boolean condition = true;
  4. if (condition) { // begin block 1
  5. System.out.println("Condition is true.");
  6. } // end block one
  7. else { // begin block 2
  8. System.out.println("Condition is false.");
  9. } // end block 2
  10. }
  11. }