5.关系运算
(1)关系运算符;
关系运算,也称为比较运算,是编程中用于比较两个值之间关系的运算符。在Java中,关系运算符用于比较两个值的大小、相等性以及不等性。
-
等于(==):用于检查两个值是否相等。如果相等,返回
true
;否则返回false
。int x = 5; int y = 5; boolean result = (x == y); // 结果为 true
-
不等于(!=):用于检查两个值是否不相等。如果不相等,返回
true
;否则返回false
。int a = 10; int b = 5; boolean result = (a != b); // 结果为 true
-
大于(>):用于检查左侧的值是否大于右侧的值。如果成立,返回
true
;否则返回false
。int m = 15; int n = 10; boolean result = (m > n); // 结果为 true
-
小于(<):用于检查左侧的值是否小于右侧的值。如果成立,返回
true
;否则返回false
。int p = 5; int q = 8; boolean result = (p < q); // 结果为 true
-
大于等于(>=):用于检查左侧的值是否大于或等于右侧的值。如果成立,返回
true
;否则返回false
。int r = 20; int s = 20; boolean result = (r >= s); // 结果为 true
-
小于等于(<=):用于检查左侧的值是否小于或等于右侧的值。如果成立,返回
true
;否则返回false
。int u = 8; int v = 10; boolean result = (u <= v); // 结果为 true
这些关系运算符在条件语句(如if
语句、while
循环等)中经常用于控制程序的流程,根据不同的条件执行不同的代码块。通过正确使用关系运算符,你可以实现在程序中进行条件判断,从而根据具体情况采取不同的行动。
(2)关系运算的优先级
在Java中,关系运算符具有特定的优先级,这意味着它们在表达式中按照一定的顺序执行。以下是Java中关系运算符的优先级,从高到低的顺序:
1. 一元运算符(如负号 `-`,逻辑非 `!`,递增 `++` 和递减 `--`)具有最高的优先级。
2. 乘法和除法运算符(`*`,`/`,`%`)的优先级次之。它们具有相同的优先级,并按照从左到右的顺序执行。
3. 加法和减法运算符(`+` 和 `-`)的优先级与乘法和除法相同。它们也按照从左到右的顺序执行。
4. 关系运算符(`==`,`!=`,`<`,`>`,`<=`,`>=`)的优先级高于加法和减法运算符,但低于一元运算符、乘法和除法运算符。
5. 逻辑非运算符 `!` 的优先级高于关系运算符。
6. 逻辑与运算符 `&&` 的优先级高于逻辑或运算符。
7. 逻辑或运算符 `||` 的优先级最低。
请注意,虽然运算符有不同的优先级,但你可以使用括号来明确指定表达式的计算顺序。括号具有最高的优先级,因此它们内部的表达式将首先计算。
例如,你可以使用括号来明确指定运算的顺序:
int result = (x + y) * (a - b);
在这个表达式中,括号内的两个加法和减法运算将首先执行,然后乘法运算将在这两个结果之间执行。
了解运算符的优先级对于编写正确的表达式非常重要,它决定了表达式中运算符的计算顺序,因此请务必在需要时使用括号来明确指定运算次序。
6.条件语句
条件语句是编程中的控制结构,用于根据某个条件来执行不同的代码块。
思想:条件判断是编程中的一种关键思想,它允许根据不同情况执行不同的代码块。条件判断在程序中的应用非常广泛,允许你根据某些条件的真假来决定程序的执行路径。以下是条件判断的核心思想:
-
条件:条件是一个布尔表达式,它可以为真(true)或假(false)。条件可以基于数据值、用户输入、系统状态等。条件通常包括比较操作符(如相等、大于、小于等)和逻辑操作符(如与、或、非)。
-
执行路径:根据条件的真假,程序可以采取不同的执行路径。如果条件为真,执行一个代码块;如果条件为假,执行另一个代码块或跳过某段代码。
(1)类型
- if语句:if语句用于执行条件为真的代码块。如果条件为假,那么代码块将被跳过。
if (condition) {
// 如果条件为真,执行这里的代码
}
- if-else语句:if-else语句用于执行两个不同的代码块,一个在条件为真时执行,另一个在条件为假时执行。
if (condition) {
// 如果条件为真,执行这里的代码
} else {
// 如果条件为假,执行这里的代码
}
- if-else if-else语句:if-else if-else语句用于执行多个条件的不同代码块,只有第一个满足条件的代码块将被执行。
if (condition1) {
// 如果条件1为真,执行这里的代码
} else if (condition2) {
// 如果条件2为真,执行这里的代码
} else {
// 如果以上条件都不为真,执行这里的代码
}
- switch语句:switch语句用于根据表达式的值执行不同的代码块。每个case标签表示一个可能的值,根据表达式的值,将执行匹配的case标签中的代码块。
switch (expression) {
case value1:
// 如果表达式的值等于value1,执行这里的代码
break;
case value2:
// 如果表达式的值等于value2,执行这里的代码
break;
// ...
default:
// 如果表达式的值与所有case都不匹配,执行这里的代码
}
这些条件语句允许你根据不同的条件来控制程序的流程。你可以根据特定的逻辑要求选择适当的条件语句来实现不同的分支行为。这些语句对于编写具有决策性质的程序非常有用,例如根据用户输入做出不同的响应。
(2)常见错误
在编写判断语句时,常见的错误包括逻辑错误和语法错误。以下是一些常见的判断语句错误,以及如何避免它们:
-
忘记大括号:在
if
、else if
和else
语句中,如果你忘记使用大括号括住代码块,只有紧随其后的单个语句将受到条件影响。这可能导致预期之外的行为。错误示例:
if (condition) System.out.println("This is executed only if condition is true");
正确示例:
if (condition) { System.out.println("This is executed only if condition is true"); }
-
赋值而不是比较:在条件中使用赋值操作符(
=
)而不是比较操作符(==
)是常见的错误。赋值操作会将条件表达式的值设置为右侧的值,而不会比较两个值是否相等。错误示例:
if (x = 5) { // 错误,应该使用 x == 5 进行比较 }
正确示例:
if (x == 5) { // 正确 }
-
逻辑错误:逻辑错误是指条件的设计或判断方式不符合预期。这些错误可能导致代码无法正确执行预期的操作。
错误示例:
if (x > 5 && x < 3) { // 条件永远不会为真,因为x不能同时大于5和小于3 }
正确示例:
if (x > 5 || x < 3) { // 正确 }
-
遗漏break语句:在
switch
语句中,如果你忘记在每个case
块的末尾添加break
语句,程序将继续执行下一个case
块,而不会中断。错误示例:
switch (x) { case 1: System.out.println("One"); // 没有break case 2: System.out.println("Two"); break; }
正确示例:
switch (x) { case 1: System.out.println("One"); break; case 2: System.out.println("Two"); break; }
-
不正确的条件逻辑:在条件语句中,使用不正确的条件逻辑可能导致预期之外的结果。确保你清楚地理解条件的含义,并根据需要使用逻辑操作符(
&&
、||
)来组合条件。错误示例:
if (x > 5 && x < 10 || x > 20) { // 这样的条件逻辑可能导致不正确的结果 }
正确示例:
if ((x > 5 && x < 10) || x > 20) { // 使用括号来明确条件的逻辑 }
避免这些常见错误需要小心检查你的条件语句,并确保你的代码逻辑正确。同时,良好的编码风格和注释可以帮助提高代码的可读性,从而减少错误的发生。
个人实践
import java.util.Scanner;
public class TicketVendingMachine {
public static void main(String[] args) {
// 创建一个Scanner对象以从标准输入读取用户输入
Scanner scanner = new Scanner(System.in);
// 提示用户投币
System.out.print("请投币:");
// 从用户输入中读取一个整数,即投币的金额
int amount1 = scanner.nextInt();
// 打印用户输入的金额
System.out.println("你投入的金额是:" + amount1);
// 检查是否投入的金额大于或等于10
if (amount1 >= 10) {
System.out.println("******************");
System.out.println("*Java城际铁路专线*");
System.out.println("***无指定座位票***");
System.out.println("****票价:10元****");
System.out.println("******************");
// 计算并打印找零金额
System.out.println("找零:" + (amount1 - 10));
}
// 关闭Scanner对象
scanner.close();
}
}