先看下运算的代码:
boolean test3=true||true&&false;
boolean test5=false&&true||true
System.out.println("test3="+test3);
System.out.println("test5="+test5);
是谁像我一样把 test3 算成 false的?
结果:
test3=true
test5=true
下面来解释下:
大家都知道短路的说法吧。
1.逻辑与(&&),如果第一个操作数为false,那么结果肯定false,所以在这种情况下,将不会执行逻辑与后面的运算了,即发生了短路。
2.逻辑或(||),如果第一个操作数为ture,那么结果肯定是ture,所以在这种情况下,将不会执行逻辑与后面的运算了,即发生了短路。
关于短路注意:
一旦能够明确无误地确定整个表达式的值,就不会再计算表达式剩余的部分了。注意一定要是明确无误地确定整个表达式的值才会短路。
像上面的情况:既有&&又有||这个时候就不会短路,而是按照优先级进行运算。&&是先于||所以&&的先运算,而局部运算也会走短路逻辑。
例如:
boolean test2=false&&5/0>0||false;(结果为:test2=false)
5除以0 ,明显被除数为0会报错,而此时运行确没有报错,就是因为逻辑与短路。
而反过来
boolean test2=true&&5/0>0||false;
就会报被除数为0错误。
总结:
逻辑运算符运算是,如果明确无误地确定整个表达式的值,就会走“短路”逻辑,而如果比较复杂的话就会按照优先级进行运算,而局部运算也会用到短路逻辑。
运算符优先级参考:
http://blog.csdn.net/xiaoli_feng/article/details/4567184
- 浏览: 269035 次
- 性别:
- 来自: 北京
最新评论
-
liujunhao225:
jsoup 不是jsonp,请注意
使用JSONP 解析HTML网页。 -
ding2wife:
通过此文章终于知道他是干嘛的啦
android的armeabi和armeabi-v7a -
lkl:
真好的文章
android的armeabi和armeabi-v7a -
saturn54:
这真是好文章
android的armeabi和armeabi-v7a -
zhengfuzhou:
你好,咨询下,用google带的签名来签名,是哪个工具可以签名 ...
如何使Android应用程序获取系统权限
相关推荐
Java中的算术运算符是编程过程中非常基础且重要的部分,它们用于执行基本的数学运算,如加法、减法、乘法、除法等。在Java中,算术运算符分为一元运算符和二元运算符。 1. **一元运算符**: - **正(+)**:对操作数...
如果遇到优先级判断,使用小括号可以清晰地控制运算顺序。 2. **懒人必备运算符** - **+=, -=, /=, *=, %=** 是赋值运算符的快捷形式,例如 `x += y` 相当于 `x = x + y`。 3. **关系运算符** - **>** (大于): ...
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、HashMap和Hashtable的区别。 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空...
- **括号使用**:正确使用括号以确保运算顺序,避免误解。 - **const关键字**:利用const限定函数参数,提高代码安全性。 - **函数参数**:控制函数参数数量,减少复杂度。 - **返回类型**:明确函数返回类型,避免...
- **整型运算符**:在C语言中,模运算符`%`的运算对象必须是整型。 ### 21. PowerPoint中的动画效果 **题目描述**:询问如何在PowerPoint中设置对象的“飞入”动画效果。 **知识点**: - **自定义动画**:在...
通过这种方式,开发者可以根据实际需求调整用户在多个控件之间切换的逻辑顺序。 ### 2. 数据源连接对象 在.NET框架中,与数据源建立连接的对象是**DataReader**(选项B)。例如,在ADO.NET中,`SqlConnection`用于...
- **知识点**:在编程语言中,逻辑表达式的求值遵循特定的运算规则。 - **描述**:根据给定的条件,a>b>=c AND a=d 的值为False。 #### 23. Access主菜单功能 - **知识点**:Access是Microsoft Office套件中的一个...
宏定义在预处理阶段进行替换,不考虑表达式的运算顺序。 **解析:** 题目中的宏定义`#define f(x) x*x*x`用于计算一个数的三次方。当宏`f(a+1)`被调用时,由于宏定义不考虑表达式的优先级,实际计算的是`(a+1)*(a+1...
7.4.3 逻辑运算符 7.4.4 不同增强类型 7.4.5 引介增强用法 7.5 切点函数详解 7.5.1 @annotation() 7.5.2 execution() 7.5.3 args()和@args() 7.5.4 within() 7.5.5 @within()和@target() 7.5.6 target...
7.4.3 逻辑运算符 7.4.4 不同增强类型 7.4.5 引介增强用法 7.5 切点函数详解 7.5.1 @annotation() 7.5.2 execution() 7.5.3 args()和@args() 7.5.4 within() 7.5.5 @within()和@target() 7.5.6 target...
条件表达式与逻辑运算 - **条件表达式的计算**: - 当`a = -14, b = 3`时,条件表达式的计算结果为`-14`(A)。这表明条件表达式的计算取决于给定的条件和运算符。 ### 11. 数组操作 - **数组下标越界问题**: ...
Java 中使用模运算符 `%` 来判断一个数是否能被另一个数整除。题目中的正确答案应该是判断 n 不能被 13 整除的表达式。 **正确答案应为** `n % 13 != 0`,这表示如果 n 不能被 13 整除,则表达式的值为 true。 ###...