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 写在最后

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

相关文章
|
10天前
|
Java
Java运算符
Java运算符
39 12
|
2月前
|
Java 测试技术 数据处理
Java零基础教学(17):Java运算符详解
【8月更文挑战第17天】Java零基础教学篇,手把手实践教学!
45 4
|
2月前
|
Java
【Java基础面试十一】、int和Integer有什么区别,二者在做==运算时会得到什么结果?
这篇文章解释了Java中`int`基本数据类型和其包装类`Integer`之间的区别,并指出在进行`==`运算时,`Integer`会拆箱为`int`类型,然后比较它们的值是否相等。
【Java基础面试十一】、int和Integer有什么区别,二者在做==运算时会得到什么结果?
|
1月前
|
Java 测试技术 程序员
Java零基础(23) - Java赋值运算符,了解一下!
【9月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
44 11
|
2月前
|
Java 测试技术 计算机视觉
Java零基础(18) - Java运算符,了解一下!
【8月更文挑战第18天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
31 5
|
2月前
|
Java
【Java 第三篇章】注释、数据类型、运算符
【8月更文挑战第2天】 Java支持三种注释:单行(`//`)、多行(`/*...*/`)及文档注释(`/**...*/`)。它定义了八种基本数据类型,包括四种整数类型(`byte`、`short`、`int`、`long`),两种浮点类型(`float`、`double`),一种字符类型(`char`)和一种布尔类型(`boolean`)。数据类型之间可以自动转换或通过强制转换改变,但后者可能导致精度损失。Java中的运算符涵盖算术(如`+`、`-`)、赋值(如`=`)、比较(如`==`)、逻辑(如`&&`)和三目运算符等。例如,算术运算可用于执行基本数学计算,而逻辑运算符用于组合条件判断。
16 1
|
2月前
|
存储 Java
02 Java基础语法(变量+数据类型+运算符)(下)
02 Java基础语法(变量+数据类型+运算符)
23 5
|
1月前
|
Java 测试技术 开发者
Java零基础(24) - Java条件运算符,了解一下!
【9月更文挑战第3天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
21 0
|
2月前
|
存储 Java
02 Java基础语法(变量+数据类型+运算符)(上)
02 Java基础语法(变量+数据类型+运算符)
42 4
|
3月前
|
安全 Java 测试技术
day16:Java零基础-instanceof 运算符
【7月更文挑战第16天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
43 8
下一篇
无影云桌面