博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
&&运算符和||运算符的优先级问题 专题
阅读量:5926 次
发布时间:2019-06-19

本文共 2226 字,大约阅读时间需要 7 分钟。

 

public class SyntaxTest {    @Test    public void test() {        System.out.println(true || true && false);//&&的优化级比||高。所以为true        System.out.println((true || true) && false);//false        System.out.println(true || (true && false));//true    }}

 

 

@Test    public void testPriority() {        /**         * 用&&连接的两个变量会被当作一个值来看,按从左到右的顺序,         * 如果&&左边的值为false,则结果已出,&&连接的右边的表达式就不会被执行         * 这就是短路特性         * ||运算符的特性:         * 按顺序进行运算,只要找到一个为真的,就不继续运算,整个结果就返回真         * &&运算符的特性:         * 只要找到一个false,就结束         */        int flag1 = 1, flag2 = 2;        LOGGER.info("1、result:{}", checkFalse() && (checkTrue(flag1) || checkTrue(flag2)));//后面两个checkTrue()方法不会被执行        LOGGER.info("2、result:{}", checkFalse() && checkTrue(flag1) || checkTrue(flag2));//checkTrue(flag1)不会被执行    }    private static boolean checkFalse() {        boolean tmp = false;        LOGGER.info("I am checkFalse(),I am {}", tmp);        return tmp;    }    private static boolean checkTrue(int flag) {        boolean tmp = true;        LOGGER.info("flag:{},I am checkTrue(),I am {}", flag, tmp);        return tmp;    }

输出:

16:25:10.357 [main] INFO com.syntax.SyntaxTest - I am checkFalse(),I am false16:25:10.360 [main] INFO com.syntax.SyntaxTest - 1、result:false16:25:10.360 [main] INFO com.syntax.SyntaxTest - I am checkFalse(),I am false16:25:10.360 [main] INFO com.syntax.SyntaxTest - flag:2,I am checkTrue(),I am true16:25:10.360 [main] INFO com.syntax.SyntaxTest - 2、result:true

 

 

依据:根据输出结果可以看出

第二个没有加小括号,在实际执行时前两个checkFalse() && checkTrue()先运算,是一个整体

运算后的结果再与后面的进行||运算

 

单目乘除为关系,逻辑三目后赋值。

单目:单目运算符+ –(负数) ++ -- 等乘除:算数单目运算符* / % + -为:位移单目运算符<< >>关系:关系单目运算符> < >= <= == !=逻辑:逻辑单目运算符&& || & | ^三目:三目单目运算符A > B ? X : Y ,其中三目中中的后":"无意义,仅仅为了凑字数赋值:赋值=

http://blog.csdn.net/shine0181/article/details/6670023

 

python中的优先级

运算符示意

not –表示取反运算
and –表示取与运算
or –表示取或运算

运算符优先级not > and > or

举例如下:

bool_one = False or not True and Trueprint bool_onebool_two = False and not True or Trueprint bool_twobool_three = True and not (False or False)print bool_threebool_four = not not True or False and not Trueprint bool_fourbool_five = False or not (True and True)print bool_five

程序输出:

FalseTrueTrueTrueFalse

 

 

 

转载于:https://www.cnblogs.com/softidea/p/3842529.html

你可能感兴趣的文章
寻ta分析与站点内容
查看>>
Webx学习(一)
查看>>
odi 12.2.1中访问excel文件
查看>>
jQuery常用及基础知识总结(一)
查看>>
ThreadPoolExecutor详解
查看>>
毛[文强]老师的一堂前端课程
查看>>
解决教学平台上文件中存在无扩展名BUG的办法
查看>>
查看SqlAzure和SQLServer中的每个表数据行数
查看>>
iOS应用内支付(内购)的个人开发过程及坑!
查看>>
紫橙绿蓝的jQuery幻灯片切换
查看>>
centos5.5 安装git
查看>>
[改善Java代码]Java的泛型是类型擦除的
查看>>
Adding Search
查看>>
独家分享——大牛教你如何学习Web前端开发
查看>>
教程:如何手动安装Xamarin与Xamarin for VisualStudio
查看>>
linux tar.gz
查看>>
ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区...
查看>>
MHA在线切换过程
查看>>
Oracle logmnr工具分析日志脚本
查看>>
Atitit.api参数传递的设计
查看>>