文档

Java™教程
隐藏目录
表达式、语句和块
教程:学习Java语言
课程:语言基础

表达式、语句和代码块

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

表达式

表达式是由变量、运算符和方法调用构成的结构,根据语言的语法构建,评估为单个值。你已经看到了一些表达式的示例,如下面加粗的示例所示:

int cadence = 0;
anArray[0] = 100;
System.out.println("Element 1 at index 0: " + anArray[0]);

int result = 1 + 2; // result现在是3
if (value1 == value2) 
    System.out.println("value1 == value2");

表达式返回的值的数据类型取决于表达式中使用的元素。表达式 cadence = 0 返回一个 int 值,因为赋值运算符返回与其左操作数相同数据类型的值;在这种情况下,cadence 是一个 int 类型的变量。从其他表达式中可以看到,表达式也可以返回其他类型的值,比如 booleanString

Java编程语言允许你从各种较小的表达式构建复合表达式,只要表达式的一部分所需的数据类型与另一部分的数据类型匹配即可。下面是一个复合表达式的示例:

 
1 * 2 * 3

在这个特定的示例中,表达式的求值顺序不重要,因为乘法的结果与顺序无关;无论你以哪个顺序进行乘法,结果总是相同的。然而,并非所有的表达式都是如此。例如,下面的表达式根据你先执行加法还是除法操作而产生不同的结果:

x + y / 100    // 模棱两可

你可以使用平衡的括号(( and ))来明确表达式的计算顺序。例如,为了使前面的表达式不模棱两可,你可以写成如下形式:

 
(x + y) / 100  // 不模棱两可,推荐的方式

如果你没有明确指定操作的执行顺序,执行顺序由表达式中使用的运算符的优先级决定。优先级较高的运算符先进行计算。例如,除法运算符的优先级高于加法运算符。因此,下面两个语句是等价的:

x + y / 100 
x + (y / 100) // 不模棱两可,推荐的方式

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

语句

语句与自然语言中的句子大致相当。一个 语句 构成一个完整的执行单元。以下类型的表达式可以通过在表达式末尾加上分号 (;) 来转换为语句。

这些语句被称为 表达式语句。以下是一些表达式语句的示例。

// 赋值语句
aValue = 8933.234;
// 自增语句
aValue++;
// 方法调用语句
System.out.println("Hello World!");
// 对象创建语句
Bicycle myBike = new Bicycle();

除了表达式语句,还有两种其他类型的语句: 声明语句控制流语句声明语句 用于声明变量。你已经见过许多声明语句的示例:

// 声明语句
double aValue = 8933.234;

最后,控制流语句 控制语句的执行顺序。你将在下一节 控制流语句 中学习控制流语句。

代码块

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

class BlockDemo {
     public static void main(String[] args) {
          boolean condition = true;
          if (condition) { // 开始代码块 1
               System.out.println("Condition is true.");
          } // 结束代码块 1
          else { // 开始代码块 2
               System.out.println("Condition is false.");
          } // 结束代码块 2
     }
}

上一页: 问题和练习:运算符
下一页: 问题和练习:表达式、语句和代码块