表达式,语句和块

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

Expressions

  • expression *是由变量,运算符和方法调用组成的构造,这些构造是根据语言的语法构造的,其结果为单个值。您已经看过表达式的示例,下面以粗体显示:
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 * 2 * 3

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

x + y / 100    // ambiguous

您可以确切地指定如何使用平衡括号(和)评估表达式。例如,要使上一个表达式明确,可以编写以下代码:

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

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

x + y / 100 

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

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

语句

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

  • Assignment expressions

  • 任何使用++--

  • Method invocations

  • 对象创建表达式

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

// assignment statement
aValue = 8933.234;
// increment statement
aValue++;
// method invocation statement
System.out.println("Hello World!");
// object creation statement
Bicycle myBike = new Bicycle();

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

// declaration statement
double aValue = 8933.234;

最后,控制流语句规定了执行语句的 Sequences。您将在下一部分控制流语句中了解控制流语句。

Blocks

块是平衡括号之间的一组零个或多个语句,可以在允许单个语句的任何地方使用。以下示例BlockDemo演示了块的使用:

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