内容正文:
Java语言概述及开发基础(三)
[考纲要求]
考试内容:
运算符与表达式。
知识点要求:
5.掌握赋值运算符、算术运算符、自增/自减运算符、关系运算符、逻辑运算符等的运用。
6.掌握表达式的组成规则、表达式运算中的类型转换、优先级和结合性。
[课时安排]
2课时
[知识梳理]
一.运算符
Java的运算符代表着特定的运算指令,在程序运行时连接的操作数进行相应的运算。
Java 中提供了丰富的运算符,按照功能划分主要有赋值运算符、算术运算符、关系运算符、逻辑 运算符、条件运算符、位运算符等;
按照操作数的多少可划分为一元运算符、二元运算符和 三元运算符。
二.赋值运算符
赋值运算符属于双目运算符,用于将一个表达式的值赋给一个变量。赋值运算符的右侧是表达式,左侧是变量。
赋值运算符的优先级较低,是14级,结合方向自右到左。
1. 简单赋值运算符 (=):
将右侧表达式的值赋给左侧的变量。
示例:int a = 10;
2. 扩展赋值运算符:
将右侧表达式的值与左侧变量的当前值进行某种运算,然后将结果赋给左侧变量。
示例:
int a = 10; a += 5; // a 现在是 15
int a = 10; a -= 5; // a 现在是 5
int a = 10; a *= 5; // a 现在是 50
int a = 10; a /= 5; // a 现在是 2
int a = 10; a %= 5; // a 现在是 0
三.算术运算符
算术运算符是数学中最常用的一类运算符,Java 中算术运算符包括+、一、*、/、%。
其中加减运算符优先级别要低于乘、除、求余运算,正、负值运算符优先级别要高于乘、 除、求余、加、减。
1. 加法运算符 (+):
加法运算符用于将两个操作数相加。
示例:int a = 10 + 5; // a 现在是 15
2. 减法运算符 (-):
减法运算符用于从第一个操作数中减去第二个操作数。
示例:int a = 10 - 5; // a 现在是 5
3. 乘法运算符 (*):
乘法运算符用于将两个操作数相乘。
示例:int a = 10 * 5; // a 现在是 50
4. 除法运算符 (/):
除法运算符用于将第一个操作数除以第二个操作数。
示例:double a = 10 / 5; // a 现在是 2.0
5. 取模运算符 (%):
取模运算符用于计算两个操作数的余数。
示例:int a = 10 % 5; // a 现在是 0
6. 正号(+):
在数学运算中,正号表示正数。
实例:+10;
7. 负号(-):
在数学运算中,负号表示负数。
在算术运算中,负号可以用于取反操作,即将一个数的符号反转。
实例:+10;
示例:int a = 10; a = -a; // a 现在是 -10
四.自增、自减运算符
在Java中,自增(++)和自减(--)运算符用于自动增加或减少变量的值。这些运算符有两种形式:前缀形式和后缀形式。
1. 自增运算符(++):
前缀形式:在执行表达式之前增加变量的值。
示例:int a = 10; int b = a++; // b 现在是 10, a 现在是 11
在这个例子中,a 先被赋予 10,然后 a 的值增加 1,但是 b 使用的 a 的原始值。
后缀形式:在执行表达式之后增加变量的值。
示例:int a = 10; int b = ++a; // b 和 a 现在都是 11
在这个例子中,a 的值先增加 1,然后 b 使用新的 a 值。
2. 自减运算符(--):
前缀形式:在执行表达式之前减少变量的值。
示例:int a = 10; int b = a--; // b 现在是 10, a 现在是 9
在这个例子中,a 先被赋予 10,然后 a 的值减少 1,但是 b 使用的 a 的原始值。
后缀形式:在执行表达式之后减少变量的值。
示例:int a = 10; int b = --a; // b 和 a 现在都是 9
在这个例子中,a 的值先减少 1,然后 b 使用新的 a 值。
五.关系运算符
在Java中,关系运算符用于比较两个值,并返回一个布尔值(true 或 false)。这些运算符通常用于条件语句(如if、while和do-while)中,以根据比较结果决定执行路径。
六.逻辑运算符
在Java中,逻辑运算符用于组合多个布尔表达式,以生成新的布尔表达式。
七.位运算符
位运算符用于对二进制位进行操作,只能对整数和字符型数据进行操作(这些数据类型在底层都是以二进制形式存储的,可以进行位级别的操作),所得结果一定是整数。
八.表达式
在Java中,表达式是由运算符、变量、常量等组成的,用于计算结果并生成新的值。表达式可以是简单的,也可以是复杂的,是程序中执行计算的基础。
// 算术表达式
int a = 5;
int b = 3;
int sum = a + b; // 结果是 8
int product = a * b; // 结果是 15
// 赋值表达式
int value = 10;
value += 5; // 赋值表达式,将 15 赋给 value
// 关系表达式
int x = 10;
int y = 20;
boolean isGreater = x > y; // 结果是 false
// 逻辑表达式
boolean isEqual = (x == y) || (x != y); // 结果是 true
// 条件表达式
int max = (x > y) ? x : y; // 结果是 20
// 位运算表达式
int bitwiseAnd = x & y; // 结果是 0
int bitwiseOr = x | y; // 结果是 30
九.优先级和结合性
在Java中,运算符的优先级和结合性决定了表达式中运算符的执行顺序。运算符的优先级定义了当一个表达式中包含多个运算符时,它们被计算的顺序。结合性定义了具有相同优先级的运算符之间的结合顺序。
[限时练习]
1.下列选项中,不属于Java中赋值运算符的是( )
A. = B. +=
C. * D. %=
【答案】C
【解析】选项C * 是乘法运算符,不属于赋值运算符。
2. 在Java中,以下关于自增运算符的说法,错误的是( )
A. 自增运算符有两种形式:前缀形式和后缀形式
B. 前缀形式会在使用变量值之前增加变量的值
C. 后缀形式会在使用变量值之后增加变量的值
D. 自增运算符只能用于变量,不能用于表达式
【答案】D
【解析】 自增运算符可以用于变量,也可以用于表达式,例如 (a++) * 2。
3. 在Java中,下列表达式中,结果为true的是( )
A. 10 > 20 && 20 < 10
B. 10 > 20 || 20 < 10
C. !(10 == 20)
D. 10 != 10 && 20 < 10
【答案】C
【解析】选项C表示10不等于20,结果为true。
4在Java中,以下关于位运算符的说法,正确的是( )
A. 位运算符只能用于整数和字符型数据
B. 位运算符运算的结果一定是整数
C. 位运算符运算的结果一定是布尔值
D. 位运算符运算的结果一定是浮点数
【答案】B
【解析】 位运算符运算的结果一定是整数,因为它们是对二进制位进行操作。
5. 在Java中,以下关于运算符优先级的说法,正确的是( )
A. 逻辑或运算符的优先级高于逻辑与运算符
B. 逻辑运算符的优先级高于关系运算符
C. 关系运算符的优先级高于赋值运算符
D. 赋值运算符的优先级最高
【答案】C
【解析】 A 选项中,逻辑与运算符 && 的优先级高于逻辑或运算符 ||。B 选项中,逻辑运算符的优先级低于关系运算符。D 选项中,赋值运算符的优先级较低。
6.自增运算符的前缀形式和后缀形式功能完全相同,只是执行顺序不同。( )
【答案】错误
【解析】自增运算符的前缀形式和后缀形式虽然都会使变量的值增加 1,但它们的执行顺序不同,导致最终结果可能不同。前缀形式 ++a; 先增加 a 的值,再进行后续操作;后缀形式 a++; 先进行后续操作,再增加 a 的值。
7.逻辑运算符 && 和 & 都表示逻辑与运算,可以互相替换使用。( )
【答案】错误
【解析】逻辑运算符 && 表示短路逻辑与,只有当左侧表达式为 true 时才会计算右侧表达式。而 & 运算符会计算两边表达式的值,不管左侧表达式的结果如何。。
8.位运算符不可以对浮点数进行操作。( )
【答案】正确
【解析】位运算符只能对整数和字符型数据进行操作,不能对浮点数进行操作。因为浮点数在内存中是以指数形式存储的,不能直接进行位运算。
9.Java 中的算术运算符中,乘法运算符的优先级高于加法运算符。( )
【答案】正确
【解析】 在 Java 中,算术运算符的优先级从高到低依次为:单目运算符(++,–)、乘法运算符(*)、除法运算符(/)、求余运算符(%)、加法运算符(+)、减法运算符(-)。因此,乘法运算符的优先级确实高于加法运算符。
10.阅读以下代码,
int a = 10;
int b = 20;
int result = a + b * 2 - a % b;
result的值为( )。
【答案】 40
11.阅读以下代码,
int a = 10;
int b = 20;
int result = (a++ + ++b) * 2;
result的值为( )。
【答案】 62
12.阅读以下代码,
int a = 10;
int b = 20;
boolean result = (a > b) && (a < b * 2);
result的值为( )。
【答案】false
13.阅读以下代码,
int a = 10;
int b = 20;
boolean result = (a++ == b--) || (a < b);
result的值为( )。
【答案】true
14.阅读以下代码,
int a = 0b1010; // 二进制 1010
int b = 0b1100; // 二进制 1100
int result = a & b;
result的值为( )。
【答案】8
15.阅读以下代码,
int a = 0b1010; // 二进制 1010
int result = a << 2;
result的值为( )。
【答案】40
16阅读以下代码,
int a = 10;
int b = 5;
int result = a / b;
result的值为( )。
【答案】2
17阅读以下代码,
int a = 10;
int b = 3;
int result = a % b;
result的值为( )。
【答案】1
[归纳小结]
学科网(北京)股份有限公司
$$