Java 表达式、语句和块
1. 表达式
1.1 概念
表达式是由数字、运算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。其中,约束变量是在表达式中已被指定数值的变量,自由变量则可在表达式之外另行指定数值。
在Java中,表达式是根据Java语法由变量、运算符和方法调用组成的结构,其结算结果为单个值。
1.2 分类
1.2.1 算数表达式
算数表达式是最常用的表达式,又称数学表达式,是通过算术运算符来进行运算的数学公式。使用Java进行算数运算,首先要声明变量,如:int num = 10;
。变量创建后,可使用算数运算符(+、-、*、/、 %、++、 – )操作变量值。
例如:
public class ArithmeticExpression1 {
public static void main(String[] args) {
int num = 10;
int result = num / 3;
System.out.println(num + " / 3 = " + result);
}
}
编译执行后,屏幕打印:10 / 3 = 3
。对于操作数为整型的除法表达式,计算结果取整数部分。若想得到小数,可用浮点型变量作操作数,如10.0 / 3
,返回值为浮点型。
使用自增 / 自减表达式运算时,要注意前后自增 / 自减运算符的差别。
public class ArithmeticExpression2 {
public static void main(String[] args) {
// 前自增
System.out.println("------ 前自增 ------");
int num = 10;
System.out.println("++num = " + (++num));
System.out.println("num = " + num);
// 前自减
System.out.println("------ 前自减 ------");
num = 10;
System.out.println("--num = " + (--num));
System.out.println("num = " + num);
// 后自增
System.out.println("------ 后自增 ------");
num = 10;
System.out.println("num++ = " + (num ++));
System.out.println("num = " + num);
// 前自减
System.out.println("------ 前自减 ------");
num = 10;
System.out.println("num-- = " + (num --));
System.out.println("num = " + num);
}
}
运行结果:
------ 前自增 ------
++num = 11
num = 11
------ 前自减 ------
--num = 9
num = 9
------ 后自增 ------
num++ = 10
num = 11
------ 前自减 ------
num-- = 10
num = 9
结论:前自增 / 自减先进行自增或自减运算,再进行表达式运算;后自增 / 自减先进行表达式运算,再进行自增或自减运算。
1.2.2 布尔表达式
布尔表达式的结果只有true(真)和false(假)两个值。在Java语言中,可使用关系运算符或逻辑运算符代替算数运算符。
例如:
publicclass BooleanExpression1 {
public static void main(String[] args) {
// 初始化两个整型变量a、b,值分别为2、3
int a = 2, b = 3;
// 分别打印比较运算符比较的结果
System.out.println(a == b);
System.out.println(a!= b);
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a >= b);
System.out.println(a <= b);
}
}
布尔表达式常作为条件分支语句中的条件。
publicclass BooleanExpression2 {
public static void main(String[] args) {
// 初始化4个整型变量
int i = 4, j = 5, k = 7, m = 8;
// i > j && m < k++ 即为条件表达式
if(i > j && m < k++) {
k++;
} else {
k--;
}
System.out.println("k = " + k);
}
}
编译执行后,屏幕打印:k = 6
。此例中,若布尔表达式i > j && m < k++
为真,则执行if分支,k自增1;否则执行else分支,k自减1。因i小于j,且&&运算符有短路作用,所以m < k++
不做运算,直接进入else分支。
逻辑运算符的短路:在表达式(a && b)
中,若a为假,则b不会被求值,因为表达式必为假;在表达式(a || b)
中,若a为真,则b不会被求值,因为表达式必为真。若想取消短路,可用&代替&&、|代替||,但不建议这样写,会降低代码可读性。
2. 语句
在计算机编程中,语句是指令式编程语言中最小的独立元素,用于表达程序要执行的动作。多数语句以高级语言编写成一个或多个语句序列,命令计算机执行指定操作。
语句和自然语言中的句子类似,一条语句构成完整的执行单元。通过使用英文分号(;)终止表达式,可将赋值表达式、自增 / 自减 ++ 或 --、方法调用、对象创建表达式(面向对象部分将会学到)制成语句。
例如:
- 变量声明语句:
int age;
- 赋值语句:
age = 20;
- 自增语句:
age ++;
- 方法调用语句:
System.out.println("Hello World! ");
3. 块
块通常用于将两条或多条语句组合在一起,使其在格式上更像一条语句。一堆语句可放在大括号中作为单个块执行,还可为其命名或提供执行条件(下一节的条件判断将会讲到)。
例如:
{
int a = 1;
int b = 2;
int c = 3;
int result = a + b + c;
}