Java中的运算符--短路运算

简介: Java中的短路运算:短路与&& 短路或||

0 写在前面

JAVA中有两个短路运算,一个是短路与,一个是短路或。
所谓短路,就是当一个参与运算的操作数足以推断该表达式的值时,另一个操作数(可能是表达式)就不会执行。

1 介绍

短路与:&&
短路或:||
应用:

-------------------------------------------
两个:(逻辑1 && 逻辑2)
多个:(逻辑1 && 逻辑 2 &&  逻辑3 &&……)
-------------------------------------------
两个:(逻辑1 || 逻辑2)
多个:(逻辑1 || 逻辑 2 ||  逻辑3 ||……)
-------------------------------------------

2 举例

逻辑与、逻辑或都是自作向右计算。

2.1 逻辑与 &&

两边同时为true,则为true。
有一方为false,则为false。
左边为false,右边不执行,为false。
如果第一个操作数已经能够确定表达式为false,则自动停止,第二个就不再进行运算判断。
在这里插入图片描述
举例:

        int a = 3;
        int b = 3;

        System.out.println(a++ == 10 && ++b == 10);//false
        
        System.out.println(a);//4
        
        System.out.println(b);//3
    }

结果为false。
因为a++的运算为先使用a的值再自加,所以3==10的结果为false,那么第一个表达式为false时在短路与中,第二个表达式不执行;
没走到第二个表达式,那么b也就没运算,b得值还是3;

2.2 逻辑或 ||

两边同时为false,则为false。
有一方为true,则为true。
左边为true,右边不执行,为true。
如果第一个操作数已经能够确定表达式为true,则自动停止,第二个就不再进行运算判断。
在这里插入图片描述

        int x = 3;
        int y = 3;

        System.out.println(x++ == 3 || ++y==10);//true

        System.out.println(x);//4

        System.out.println(y);//3

结果为true。
因为x++的运算为先使用x的值再自加,所以3==3的结果为true,那么第一个表达式为true时在短路或中,第二个表达式不执行;
没走到第二个表达式,那么y也就没运算,y得值还是3;

3 小技巧

使用逻辑运算可以避免一些小错误,例如在java中被除数是0的话,会引发一些问题。
使用逻辑与则可以避免这个错误:

        x!=0 && y/x > 3

此段代码说的是,如果x不等于0,才会将x作为被除数。
还有许多小技巧,碍于篇幅不列举了,可以自行探索一下。

4 写在最后

关于短路运算有一个口诀可以记一下:
逻辑与-->一假则假,全真才真
逻辑或-->一真则真,全假才假
实际开发中逻辑的应用还是比较多的。

相关文章
|
3月前
|
Java
Java运算符
Java运算符
55 12
|
4月前
|
Java 测试技术 数据处理
Java零基础教学(17):Java运算符详解
【8月更文挑战第17天】Java零基础教学篇,手把手实践教学!
86 4
|
2月前
|
算法 Java 测试技术
🌟Java 零基础 | 详解 单目运算符
【10月更文挑战第14天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
58 7
|
2月前
|
Java 测试技术 开发者
🌟Java 零基础 | 深入理解三目运算符
【10月更文挑战第13天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
77 3
|
2月前
|
Java 测试技术 开发者
🌟Java零基础-Lambda运算符详解 🌟
【10月更文挑战第12天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
28 1
|
2月前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
64 4
|
2月前
|
安全 Java 测试技术
🌟 Java 零基础 | 详解 instanceof 运算符
【10月更文挑战第1天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
57 1
|
2月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
48 3
|
3月前
|
Java 测试技术 程序员
Java零基础(23) - Java赋值运算符,了解一下!
【9月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
69 11
|
3月前
|
Java 测试技术 开发者
Java零基础(24) - Java条件运算符,了解一下!
【9月更文挑战第3天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
45 0