第四章 运算符
4.1 运算符概述
运算符是用于执行操作的符号,能够对变量和值进行处理。在 Java 中,运算符分为多种类型,包括算术运算符、赋值运算符、比较运算符、逻辑运算符和位运算符等。
4.2 算术运算符
算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法和取模运算。
-
+
:加法 -
-
:减法 -
*
:乘法 -
/
:除法 -
%
:取模(取余数)
示例代码:
int a = 10; int b = 3; int sum = a + b; // 13 int difference = a - b; // 7 int product = a * b; // 30 int quotient = a / b; // 3 int remainder = a % b; // 1
4.3 赋值运算符
赋值运算符用于将右边的值赋给左边的变量。
-
=
:赋值 -
+=
:加后赋值 -
-=
:减后赋值 -
*=
:乘后赋值 -
/=
:除后赋值 -
%=
:取模后赋值
示例代码:
int a = 5; a += 3; // 相当于 a = a + 3,结果为 8 a -= 2; // 相当于 a = a - 2,结果为 6 a *= 2; // 相当于 a = a * 2,结果为 12 a /= 4; // 相当于 a = a / 4,结果为 3 a %= 2; // 相当于 a = a % 2,结果为 1
4.4 比较运算符
比较运算符用于比较两个值,并返回布尔值 true
或 false
。
-
==
:等于 -
!=
:不等于 -
>
:大于 -
<
:小于 -
>=
:大于等于 -
<=
:小于等于
示例代码:
int a = 5; int b = 3; boolean isEqual = (a == b); // false boolean isNotEqual = (a != b); // true boolean isGreater = (a > b); // true boolean isLesser = (a < b); // false boolean isGreaterOrEqual = (a >= b); // true boolean isLesserOrEqual = (a <= b); // false
4.5 逻辑运算符
逻辑运算符用于连接多个布尔表达式,并返回一个布尔值。
-
&&
:逻辑与(AND) -
||
:逻辑或(OR) -
!
:逻辑非(NOT)
示例代码:
boolean x = true; boolean y = false; boolean andResult = x && y; // false boolean orResult = x || y; // true boolean notResult = !x; // false
4.6 位运算符
位运算符用于对二进制位进行操作。
-
&
:按位与(AND) -
|
:按位或(OR) -
^
:按位异或(XOR) -
~
:按位取反(NOT) -
<<
:左移 -
>>
:右移 -
>>>
:无符号右移
示例代码:
int a = 5; // 二进制:0101 int b = 3; // 二进制:0011 int andResult = a & b; // 结果:0001,即1 int orResult = a | b; // 结果:0111,即7 int xorResult = a ^ b; // 结果:0110,即6 int notResult = ~a; // 结果:11111111111111111111111111111010,即-6 int leftShift = a << 1; // 结果:1010,即10 int rightShift = a >> 1; // 结果:0010,即2 int unsignedRightShift = a >>> 1; // 结果:0010,即2
4.7 三元运算符
三元运算符是 Java 中唯一的三元运算符,用于简化条件语句的操作。它的格式为:
condition ? value1 : value2
示例代码:
int a = 5; int b = 3; int max = (a > b) ? a : b; // max 为 5
第五章:流程控制 - 选择结构
5.1 流程控制概述
流程控制语句是编程语言中用于控制程序执行顺序的语句。Java 提供了多种流程控制语句来实现条件判断和多分支选择。选择结构是流程控制中的一种重要形式,它允许程序根据条件的不同执行不同的代码块。
5.2 if 语句
5.2.1 if 语句的基本结构
if
语句用于在条件为真的情况下执行某段代码。其基本语法如下:
if (条件表达式) { // 代码块 }
例如:
int age = 18; if (age >= 18) { System.out.println("你是成年人"); }
5.2.2 if-else 语句
if-else
语句用于在条件为真和条件为假时分别执行不同的代码块。其基本语法如下:
if (条件表达式) { // 条件为真时执行的代码块 } else { // 条件为假时执行的代码块 }
例如:
int age = 16; if (age >= 18) { System.out.println("你是成年人"); } else { System.out.println("你是未成年人"); }
5.2.3 if-else if-else 语句
if-else if-else
语句用于在多个条件之间进行选择。其基本语法如下:
if (条件表达式1) { // 条件1为真时执行的代码块 } else if (条件表达式2) { // 条件2为真时执行的代码块 } else { // 以上条件都为假时执行的代码块 }
例如:
int score = 85; if (score >= 90) { System.out.println("优秀"); } else if (score >= 80) { System.out.println("良好"); } else if (score >= 60) { System.out.println("及格"); } else { System.out.println("不及格"); }
5.2.4 嵌套的 if 语句
在 if
语句中,可以嵌套其他的 if
或 if-else
语句。其基本语法如下:
if (条件表达式1) { if (条件表达式2) { // 当条件1和条件2都为真时执行的代码块 } else { // 当条件1为真且条件2为假时执行的代码块 } } else { // 当条件1为假时执行的代码块 }
例如:
int age = 20; int height = 180; if (age >= 18) { if (height >= 170) { System.out.println("你是高个子成年人"); } else { System.out.println("你是成年人,但不是高个子"); } } else { System.out.println("你是未成年人"); }
5.3 switch 语句
5.3.1 switch 语句的基本结构
switch
语句用于在多个可能的值之间进行选择。其基本语法如下:
switch (表达式) { case 值1: // 代码块 break; case 值2: // 代码块 break; // 更多 case 分支 default: // 默认代码块 }
例如:
int day = 3; switch (day) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("无效的日期"); }
5.3.2 switch 语句的使用注意事项
-
switch
语句中的表达式类型可以是byte
、short
、int
、char
、enum
类型,或自 Java SE 7 开始支持的String
类型。 -
每个
case
分支都应该以break
语句结束,以防止“穿透”到下一个分支。 -
default
分支是可选的,但建议始终添加default
分支以处理所有未被明确列出的情况。 -
可以在一个
switch
语句中有多个case
分支执行同一个代码块,例如:
int day = 2; switch (day) { case 1: case 2: case 3: case 4: case 5: System.out.println("工作日"); break; case 6: case 7: System.out.println("周末"); break; default: System.out.println("无效的日期"); }
5.4 三元运算符
5.4.1 三元运算符的基本使用
三元运算符是一种简洁的条件运算符,用于替代简单的 if-else
语句。其基本语法如下:
变量 = 条件表达式 ? 表达式1 : 表达式2;
例如:
int age = 20; String status = (age >= 18) ? "成年人" : "未成年人"; System.out.println(status); // 输出:成年人
5.5 流程控制选择结构的注意事项
-
if
语句的条件表达式应返回一个布尔值:在if
语句中,条件表达式必须返回一个boolean
类型的值。可以是一个布尔变量,也可以是一个布尔表达式。 -
switch
语句中的每个case
分支都应该以break
结束:除非有特殊需求,否则每个case
分支都应该以break
结束,以避免“穿透”到下一个分支。 -
switch
语句的default
分支是可选的,但建议始终添加default
分支:default
分支用于处理所有未被明确列出的情况,以提高代码的健壮性。 -
三元运算符应仅用于简单的条件判断:虽然三元运算符可以使代码更加简洁,但应仅在简单的条件判断中使用,以保持代码的可读性。
-
嵌套的
if
语句和switch
语句应尽量避免复杂化:过多的嵌套会使代码难以阅读和维护,建议尽量简化逻辑或使用方法进行分解。