文档

Java™ 教程-Java Tutorials 中文版
表达式,语句和块
Trail: Learning the Java Language
Lesson: Language Basics

表达式,语句和块

现在你已经了解了变量和运算符,现在是学习 expressions (表达式)statements (语句)blocks (块) 的时候了。运算符可以用于构建计算值的表达式;表达式是语句的核心组成部分;语句可能被分组成块。

表达式

一个 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

在这个特定的例子中,计算表达式的顺序并不重要,因为乘法的结果与顺序无关;无论按照何种顺序应用乘法,结果总是相同的。但是,这并非所有表达式都适用。例如,下面的表达式会给出不同的结果,具体取决于你是先执行加法还是除法操作:

x + y / 100    // ambiguous

你可以使用平衡圆括号准确指定如何计算表达式:( 和 )。例如,要使前面的表达式明确无误,可以编写以下内容:

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

如果你没有明确指出要执行的操作的顺序,则顺序由分配给表达式中使用的操作符的优先级确定。优先级较高的运算符首先得到计算。例如,除法运算符的优先级高于加法运算符。因此,以下两个语句是等同的:

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

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

语句

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

这种语句称为 expression statements (表达式语句)。这里有一些表达式语句的例子。

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

除了表达式语句,还有两种其它类型的语句:declaration statements (声明语句)control flow statements (控制流语句)。一个 declaration statement (声明语句) 声明一个变量。你已经看到很多声明语句的例子:

// declaration statement
double aValue = 8933.234;

最后,control flow statements (控制流语句) 调节语句执行的顺序。你将在下一节 Control Flow Statements 中了解控制流程语句

一个 block (块) 是平衡花括号之间的一组零个或多个语句,可用于允许单个语句的任何位置。以下示例 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
     }
}

Previous page: Questions and Exercises: Operators
Next page: Questions and Exercises: Expressions, Statements, and Blocks