首页 > 基础资料 博客日记
java中常见逻辑运算 【与& 或| 非! 异或^】
2024-10-07 21:00:06基础资料围观568次
文章java中常见逻辑运算 【与& 或| 非! 异或^】分享给大家,欢迎收藏Java资料网,专注分享技术知识

逻辑运算符的深入理解与案例分析
在 Java 开发中,逻辑运算符是常见且非常重要的运算符之一。本文将详细讲解几种常用的逻辑运算符及其区别,结合示例代码和输出结果,帮助读者更好地理解和应用这些运算符。
一、常见逻辑运算符
1. a & b:逻辑与 (&)
- 规则:当
a和b同时为true时,结果为true,否则为false。
2. a && b:短路与 (&&)
- 规则:当
a和b同时为true时,结果为true,否则为false。
3. a | b:逻辑或 (|)
- 规则:当
a和b有一个为true时,结果为true,否则为false。
4. a || b:短路或 (||)
- 规则:当
a和b有一个为true时,结果为true,否则为false。
5. !a:取反 (!)
- 规则:当
a为true时,结果为false;当a为false时,结果为true。
6. a ^ b:逻辑异或 (^)
- 规则:当
a和b不相同时,结果为true,否则为false。
二、逻辑与与短路与的区别
& 和 && 都表示"与"操作,但二者有本质区别:
&(逻辑与):无论第一个条件是否为false,都将判断第二个条件,效率较低。&&(短路与):如果第一个条件为false,则不会判断第二个条件,效率较高。
示例代码
public class LogicOperator01 {
public static void main (String[] args) {
int age = 50;
// 短路与的使用
if(age > 20 && age < 90) {
System.out.println("ok100");
}
// 逻辑与的使用
if(age > 20 & age < 90) {
System.out.println("ok200");
}
// 区别示例
int a = 4;
int b = 9;
// 短路与示例
if(a < 1 && ++b < 50) {
System.out.println("ok300");
}
System.out.println("a = " + a + " b = " + b); // 输出: a = 4, b = 9
// 逻辑与示例
if(a < 1 & ++b < 50) {
System.out.println("ok400");
}
System.out.println("a = " + a + " b = " + b); // 输出: a = 4, b = 10
}
}
输出结果
ok100
ok200
a = 4 b = 9
a = 4 b = 10
解释
- 在短路与 (
&&) 中,如果a < 1为false,后面的++b < 50不会被执行,因此b的值保持为9。 - 在逻辑与 (
&) 中,即使a < 1为false,++b < 50仍会被执行,因此b的值增加为10。
三、逻辑或与短路或的区别
| 和 || 都表示"或"操作,但二者也存在区别:
|(逻辑或):无论第一个条件是否为true,都将判断第二个条件。||(短路或):如果第一个条件为true,则不会判断第二个条件。
示例代码
public class LogicOperator02 {
public static void main (String[] args) {
int age = 50;
// 短路或的使用
if(age > 20 || age < 90) {
System.out.println("ok100");
}
// 逻辑或的使用
if(age > 20 | age < 90) {
System.out.println("ok200");
}
// 区别示例
int a = 4;
int b = 9;
// 短路或示例
if(a < 1 || ++b < 50) {
System.out.println("ok400");
}
System.out.println("a = " + a + " b = " + b); // 输出: a = 4, b = 9
}
}
输出结果
ok100
ok200
a = 4 b = 9
解释
- 在短路或 (
||) 中,如果a < 1为false,++b < 50被跳过,因此b的值保持为9。 - 在逻辑或 (
|) 中,即使第一个条件满足,第二个条件仍会被执行,因此如果有修改操作,值会变化。
四、! 和 ^ 的案例演示
示例代码
public class InverseOperator {
public static void main(String[] args) {
// ! 操作是取反, T -> F, F -> T
System.out.println(60 > 20); // 输出: true
System.out.println(!(60 > 20)); // 输出: false
// ^ 逻辑异或, 当 a 和 b 不同时, 则结果为 true,否则为 false
boolean b = (10 > 1) ^ (3 < 5);
System.out.println("b=" + b); // 输出: b=false
}
}
输出结果
true
false
b=false
解释
!是取反操作符,将布尔值取反,true变为false,false变为true。^是逻辑异或操作符,当两个布尔值不相同时,结果为true,否则为false。在本例中,(10 > 1)和(3 < 5)都为true,因此结果为false。
五、综合练习
示例代码
public class LogicalOperators {
public static void main(String[] args) {
// 定义变量
boolean x = true;
boolean y = false;
short z = 46;
// 第一个 if 语句
if ((z++ == 46) && (y = true)) z++;
// 第二个 if 语句
if ((x = false) || (++z == 49)) z++;
// 输出最终结果
System.out.println("z = " + z); // 输出: z = 50
}
}
程序运行结果
z = 50
详细解释
-
初始变量值:
x = truey = falsez = 46
-
第一个
if语句:if ((z++ == 46) && (y = true)) z++;z++ == 46:在这步中,z的值为46,然后z自增至47,但比较操作发生在自增前,因此z++ == 46为true。(y = true):这是一个赋值操作,y被赋值为true,并且返回true。- 因为
&&两边都为true,所以z++再次执行,z变为48。
-
第二个
if语句:if ((x = false) || (++z == 49)) z++;x = false:这是一个赋值操作,x被赋值为false。++z == 49:z自增为49,然后进行比较,该表达式为true。- 因为
||只需要一边为true即可,所以整个表达式为true,z++再次执行,z变为50。
-
最终输出:
System.out.println("z = " + z);输出z = 50。
总结
这段代码使用了逻辑运算符 `
&&和||,以及自增运算符 ++来修改变量z的值。通过逐步分析每个操作的执行顺序,可以得出最终的结果z = 50`。
六、总结
逻辑运算符在 Java 中是非常基础但也非常重要的工具,通过理解它们的规则和差异,可以在编程中写出更高效、正确的代码。掌握逻辑与、短路与、逻辑或、短路或、取反和异或等运算符的使用,将极大地提高代码的可读性和性能。希望本文的讲解和示例能帮助你更好地理解这些运算符的使用。

文章来源:https://blog.csdn.net/Yhame/article/details/141791096
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:

