系列中的上一篇
当前教程
表达式、语句和代码块
系列中的下一篇

系列中的上一篇: 运算符概述

系列中的下一篇: 控制流语句

表达式、语句和代码块

 

表达式

表达式是由变量、运算符和方法调用组成的结构,根据语言语法构建,并计算出一个单一的值。您已经看到了表达式的示例,如下面的代码所示

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,因为赋值运算符返回与其左侧操作数相同数据类型的值;在本例中,cadence 是一个 int。正如您从其他表达式中看到的,表达式也可以返回其他类型的值,例如 booleanString

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

1 * 2 * 3

在这个特定示例中,表达式计算的顺序并不重要,因为乘法的结果与顺序无关;无论您以何种顺序应用乘法,结果始终相同。但是,这并不适用于所有表达式。例如,以下表达式会产生不同的结果,具体取决于您是先执行加法运算还是除法运算

x + y / 100    // ambiguous

您可以使用平衡的括号:() 来精确指定表达式的计算方式。例如,为了使前面的表达式明确,您可以编写以下内容

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

如果您没有明确指示运算执行的顺序,则该顺序由表达式中使用的运算符的优先级决定。优先级较高的运算符先计算。例如,除法运算符的优先级高于加法运算符。因此,以下两个语句是等效的

x + y / 100   // ambiguous

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

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

 

浮点运算

浮点运算是一个特殊的世界,其中常见的运算可能表现出意外的行为。考虑以下代码。

double d1 = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1;
System.out.println("d1 == 1 ? " + (d1 == 1.0));

您可能期望它打印 true。由于浮点加法的执行和舍入方式,它打印 false

介绍 Java 中浮点运算的实现方式超出了本教程的范围。如果您需要了解有关此主题的更多信息,可以观看以下视频。

 

语句

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

  • 赋值表达式
  • 任何使用 ++-- 的情况
  • 方法调用
  • 对象创建表达式
  • 此类语句称为表达式语句。以下是一些表达式语句的示例。
// 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;

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

 

代码块

代码块是一组零个或多个语句,位于平衡的括号之间,可以在允许使用单个语句的任何地方使用。以下示例 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
     }
}

上次更新: 2021 年 9 月 22 日


系列中的上一篇
当前教程
表达式、语句和代码块
系列中的下一篇

系列中的上一篇: 运算符概述

系列中的下一篇: 控制流语句