【翻译】Java 表达式,语句和代码块

1,278 阅读3分钟

原文链接: Expressions, Statement and 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 值,因为复制预算返回值的类型和它左操作数的类型一致;这个示例中,codence 是一个 int 值。正如你在其他示例中看到的一样,表达式返回其他类型的值,如 boolean 和 String。

Java 中允许你使用多个较小表达式构建出符合表达式,只要数据类型符合表达式要求的即可。下面是一个符合表达式的例子:

1 * 2 * 3

这个例子中,表达式的执行顺序不太重要,因为乘法运算的结果不依赖于计算顺序;无论你用什么顺序计算乘法,记过都是一样的。但并不是所有表达式都是这样的。例如在下面的例子中,取决于先计算加法还是除法,他们的计算结果是不同的:

x + y / 100

你可以使用括号来明确指出哪个表达式优先计算:( 和 )。例如,为了让上一个示例中的表达式没有歧义,你可以这么写:

(x + y) /100

如果你没有明确的指出计算的顺序,计算顺序就根据表达式中预算福的优先级来判断。高优先级的运算会优先执行。例如,除法运算的优先级比加法高。所以,下面的两个表达式是等价的:

x + y / 100
x + (y / 100) // 没有歧义,推荐

在复合表达式用,请使用括号来明确的指定哪个运算先执行。这会让你的代码更容易阅读和维护。

Statement - 语句

语句相当于我们自然语言中句子。一个语句构成一个完整的执行单元。下面类型的表达式用冒号(;)结尾时就构成了一个语句。

  • 赋值
  • ++ 或 --
  • 方法调用
  • 对象创建

这些语句成为表达式语句。这里有一些表达式语句的例子:

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

除了表达式语句外,还有其他两种语句:声明语句和流程控制语句。声明语句用来声明一个变量。你已经看到过很多声明语句的例子了:

// 声明语句
double aValue = 8933.234;

最后,流程控制语句用来控制语句的执行顺序。我们会在下一节中学习流程控制语句

Block - 代码块

代码块是由 0 个或者多个在花括号中的语句组成的,可以用于所有允许使用单个语句的地方。在下面的 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
     }
}