本文继续介绍运算符中的关系运算符、逻辑运算符,还有三元运算符。在 Java 编程中,运算符起着非常重要的作用,它们用于对数据进行操作和计算。运算符可以帮助我们进行数学运算、逻辑判断、赋值操作等,是编写复杂程序和表达式的基础。
在 Java 中,关系运算符用于比较两个值之间的关系,并返回布尔值(true
或 false
)。Java 提供了以下关系运算符:
>
:大于>=
:大于等于<
:小于<=
:小于等于==
:等于!=
:不等于接下来将逐一给出示例代码,但是目前只讨论两边操作数是基本数据类型中数值类型的关系运算。
大于(>
): 检查左操作数是否大于右操作数,如果是则返回 true
,否则返回 false
。
int a = 5;
int b = 10;
boolean c = (a > b); // false
大于等于(>=
): 检查左操作数是否大于或等于右操作数,如果是则返回 true
,否则返回 false
。
int a = 5;
int b = 10;
boolean c = (a >= b); // false
小于(<
): 检查左操作数是否小于右操作数,如果是则返回 true
,否则返回 false
。
int a = 5;
int b = 10;
boolean c = (a < b); // true
小于等于(<=
): 检查左操作数是否小于或等于右操作数,如果是则返回 true
,否则返回 false
。
int a = 5;
int b = 10;
boolean c = (a <= b); // true
相等(==
): 检查两个操作数是否相等,如果相等则返回 true
,否则返回 false
。在比较的两边操作数都是数值类型的情况下,即使它们的数据类型不相同,只要值相等,就会返回 true
。
int a = 5;
int b = 10;
float c = 5.0f;
boolean d = (a == b); // false
boolean e = (a == c); // true
不相等(!=
): 检查两个操作数是否不相等,如果不相等则返回 true
,否则返回 false
。
int a = 5;
int b = 10;
boolean c = (a != b); // true
在 Java 中,逻辑运算符用于组合和操作布尔值(boolean
)类型的表达式,返回布尔结果(true
或 false
)。
提供如下逻辑运算符:
&
:与&&
:短路与|
:或||
:短路或!
:非^
:异或&
和 &&
是逻辑与运算符,作用是对两个布尔表达式进行逻辑与操作,只有当前后两个表达式都为 true
时,结果才为 true
,否则结果为 false
。使用示例如下:
boolean result = expression1 & expression2;
boolean shortResult = expression1 && expression2;
区别就是 &&
具有短路的特性。如果第一个表达式的值为 false
,那么第二个表达式不会被计算,因为无论第二个表达式的结果如何,整个逻辑与表达式都会返回 false
。这种短路特性可以用来避免不必要的计算或者处理可能引发错误的操作。
public static void main(String[] args) {
int a = 3;
int b = 5;
// a>b为false,b>a为true
boolean c = (a>b) & (b>a); // 两边的表达式都进行计算
boolean d = (a>b) && (b>a); // 左边表达式为false,不再计算右侧表达式,即短路
System.out.println(c); // 输出:false
System.out.println(d); // 输出:false
}
那么在实际编程中,推荐使用 &&
短路与。
|
和 ||
是逻辑或运算符,作用是对两个布尔表达式进行或操作。如果至少有一个表达式为 true
,则结果为 true
;只有当两个表达式都为 false
时,结果才为 false
。使用示例如下:
boolean result = expression1 | expression2;
boolean shortResult = expression1 || expression2;
||
是短路逻辑或运算符,也用于两个布尔表达式的逻辑或操作。但是与普通逻辑或运算符 |
不同的是,如果第一个表达式的值为 true
,则不会再执行第二个表达式,直接返回 true
。
public static void main(String[] args) {
int a = 5;
int b = 3;
// a>b为true,b>a为false
boolean c = (a>b) | (b>a); // 两边的表达式都进行计算
boolean d = (a>b) || (b>a); // 左侧表达式计算为true,不再计算右侧表达式,即短路
System.out.println(c); // 输出:true
System.out.println(d); // 输出:true
}
那么在实际编程中,也是推荐使用 ||
短路或。
!
是逻辑非运算符,用于对布尔值进行逻辑否定操作。其使用示例如下:
boolean result = !expression;
!
运算符将一个布尔表达式的值取反,即如果原来的布尔值为 true
,则取反后为 false
;如果原来的布尔值为 false
,则取反后为 true
。
public static void main(String[] args) {
boolean a = true;
boolean b = !a; // 取反
System.out.println(b); // 输出:false
}
逻辑非运算符 !
可以用于实现逻辑条件的判断、布尔值的翻转等操作。例如,可以使用 !
运算符对一个条件进行取反,或者对一个布尔变量进行取反。
^
是逻辑异或运算符,用于对两个布尔表达式进行异或操作。使用示例如下:
boolean result = expression1 ^ expression2;
逻辑异或运算符 ^
的操作规则是:当且仅当两个操作数中的一个为 true
,另一个为 false
时,结果为 true
;如果两个操作数都为 true
或都为 false
,则结果为 false
。
public static void main(String[] args) {
boolean a = true;
boolean b = false;
boolean c = a ^ b;
System.out.println(c); // 输出:true
}
在上述代码中,a
与 b
变量的布尔值不相同,所以结果为 true
。只有两边的值相等(true
或 false
)时结果为 false
。
逻辑异或运算符 ^
可用于逻辑条件的判断、布尔值的翻转等操作。例如,可以使用 ^
运算符来判断两个布尔值是否不同。
三元运算符是一种特殊的条件运算符,也称为条件运算符。它由三个操作数组成,它的语法形式如下:
result = condition ? value1 : value2;
其中,condition
是一个布尔表达式,用于判断一个条件是否成立。如果 condition
为 true
,则表达式的值为 value1
;如果 condition
为 false
,则表达式的值为 value2
。
三元运算符的工作原理是,首先计算 condition
的值,如果为 true
,则返回 value1
;如果为 false
,则返回 value2
。
三元运算符在简单的条件判断场景中非常有用,可以在一行代码中根据条件选择不同的值进行赋值。
public static void main(String[] args) {
int a = 5;
int b = 10;
int max = (a > b) ? a : b;
System.out.println(max); // 输出:10
}
上述代码中,根据 (a > b)
的条件判断,如果成立,即 a
大于 b
,则将 a
赋值给变量 max
,否则将 b
赋值给 max
。
需要注意的是,三元运算符是右结合的,这意味着在嵌套使用时,可以使用括号来明确运算的顺序。此外,三元运算符的操作数可以是任何类型,但是返回的值必须与赋值目标的类型兼容。
关系运算符用于比较两个值之间的关系,并返回布尔值,比较简单。逻辑运算符有6种,对于逻辑与推荐使用短路与,逻辑或推荐使用短路或。最后是三元运算符,也叫作三目运算符,对于简单的判断,是很有用的。