简述逻辑操作(&,|,^)与条件操作(&&,||)的区别
来源:互联网 发布:时间序列预测算法编程 编辑:程序博客网 时间:2024/06/05 11:21
简述逻辑操作(&,|,^)与条件操作(&&,||)的区别
区别主要答两点:
a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路.如:
int a = 0;
int b = 0;
if( (a = 3) > 0 || (b = 3) > 0 ) //操后a =3,b=0.
区别主要答两点:
a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路.如:
int a = 0;
int b = 0;
if( (a = 3) > 0 || (b = 3) > 0 ) //操后a =3,b=0.
if( (a = 3) > 0 | (b = 3) > 0 ) //操后a =3,b=3。
逻辑表达式中的短路现象
使用逻辑操作符时,我们会遇到一种“短路”现象。即一旦能够明确无误地确定整个表达式的值,就不再计算表达式余下部分了。因此,整个逻辑表达式靠后的部分有可能不会被运算。下面对这个现象进行演示:
public class ShortCircuit{ //执行test1()时打印出执行信息 static boolean test1(int val){ System.out.println("test1("+val+")"); System.out.println("result: " + (val<1)); return val<1; } //执行test2()时打印出执行信息 static boolean test2(int val){ System.out.println("test2("+val+")"); System.out.println("result: " + (val<2)); return val<2; } //执行test3()时打印出执行信息 static boolean test3(int val){ System.out.println("test3("+val+")"); System.out.println("result: " + (val<3)); return val<3; } public static void main(String[] strs){ boolean b = test1(0)&&test2(2)&&test3(2); System.out.println("expression is: " + b); }}
每个测试都会比较参数,并返回true或false。它也会打印信息告诉你正在调用测试。这些测试都作用于下面这个表达式:
test1()&&test2()&&test3()
显示结果为:
test1(0)
result: true
test2(2)
result: false
expression is: false
你会很自然地认为所有这三个测试都会得以执行。但输出显示却并非这样。第一个测试生成结果true,所以表达式计算会继续下去。然后,第二个测试产生了一个false结果,由于这意味着整个表达式肯定为false,所以没必要继续计算剩余的表达式,那样只是浪费。“短路”一词来源于此。事实上,如果所有逻辑表达式都有一部分不必计算,那将获得潜在的性能提升。
0 0
- 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别?
- 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别
- 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别
- 简述逻辑操作(&,|,^)和条件操作(&&,||)的区别
- 逻辑操作与条件操作的区别
- 简述逻辑操作(&amp;,|,^)与条件操作(&amp;&amp;,||)的区别
- 位操作与逻辑操作符号的区别
- coldFusion不支持的逻辑操作符与对应的的条件操作符
- Python 初探3 条件分支与while循环,逻辑操作
- java逻辑操作 条件操作 位运算
- 逻辑与和条件与的区别(&&和&)
- MongoDB 逻辑与操作
- 逻辑、条件、逗号表达式操作符
- 逻辑与&&、逻辑或||、==操作符的规则
- mybatis的条件判断与集合操作
- MySQL left join操作中 on与where放置条件的区别
- linux 逻辑操作 或 与 操作
- Java逻辑与位操作
- CentOS linux下安装Oracle客户端
- protobuff 2.5 使用
- java猜数字代码
- BootStrap学习笔记-7
- 新建分支,分支推送到远程
- 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别
- 贝塞尔曲线
- 我们为什么使用线程池
- github push 错误The requested URL returned error: 403 Forbidden while ..
- SQL 基础(一)
- 【FastDev4Android框架开发】Android MVP开发模式详解(十九)
- C# 命名规范
- Java类中继承与初始化
- SyntaxError: (unicode error) truncated \UXXXXXXXX escape