原文链接: 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 } } 复制代码