Java中&与&&;|与||的区别
2016-02-19 10:11
288 查看
&,|是位运算符:
a&b是把a和b都转换成二进制数然后再进行按位与的运算;
a|b是把a和b都转换成二进制数然后再进行按位或的运算;
&&,||是逻辑运算符,短路运算
&&:当左表达式为false时,整体不可能为true,右表达式将不再运算;
||: 当左表达式为true时,整体为true,右表达式将不再运算;
也就是说在有些情况下左表达式会将右表达式“短路”。
这种方式可以避免一些错误的发生
System.out.println(1!=1&&1/0==1);
System.out.println(1==1||1/0==1
上面的语句在执行时没有报错,说明后面的除0语句没有执行。
而& , | 在得到结果之前必须计算左右表达式的值。
总结:
1.& , | 为位运算符,在得到结果之前左右表达式都要进行计算;
2.&& , ||为逻辑运算符,可以减少计算量,可以避免错误的发生
2.1&&:当左表达式为false时,整体不可能为true,右表达式将不再运算;
2.2||: 当左表达式为true时,整体为true,右表达式将不再运算。
&,|是位运算符:
a&b是把a和b都转换成二进制数然后再进行按位与的运算;
a|b是把a和b都转换成二进制数然后再进行按位或的运算;
&&,||是逻辑运算符,短路运算
&&:当左表达式为false时,整体不可能为true,右表达式将不再运算;
||: 当左表达式为true时,整体为true,右表达式将不再运算;
也就是说在有些情况下左表达式会将右表达式“短路”。
int a = 0; int b = 1; if(++a>1&&--b==0){ System.out.println("结论错误"); } System.out.println("a:" + a + ";b:" + b);//a:1;b:1 右表达式--b==0没有运算 int c = 0; int d = 1; if(++c>0||--d==0){ System.out.println("c:" + c + ";d:" + d);//c:1;d:1 右表达式--d==0没有运算 }
这种方式可以避免一些错误的发生
System.out.println(1!=1&&1/0==1);
System.out.println(1==1||1/0==1
上面的语句在执行时没有报错,说明后面的除0语句没有执行。
而& , | 在得到结果之前必须计算左右表达式的值。
总结:
1.& , | 为位运算符,在得到结果之前左右表达式都要进行计算;
2.&& , ||为逻辑运算符,可以减少计算量,可以避免错误的发生
2.1&&:当左表达式为false时,整体不可能为true,右表达式将不再运算;
2.2||: 当左表达式为true时,整体为true,右表达式将不再运算。
相关文章推荐
- Eclipse的Git插件Egit: merge合并冲突具体解决方法
- 探知Java虚拟机——初识Java
- Type Java compiler level does not match the version of the installed Java project facet
- Java 5种字符串拼接方式性能比较。
- java中有用小函数收集
- Spring Bean的生命周期
- DUBBO Caused by: java.nio.channels.ClosedChannelException
- 深入分析JavaWeb 32 -- 数据库连接池
- 深入分析JavaWeb 31 -- JDBC(MySQL)事务管理
- 深入分析JavaWeb 30 -- 使用JDBC进行批处理
- SpringMvc多视图整合配置教程(jsp、velocity、freemarker)
- Eclipse中文乱码问题
- MyEclipse高效开发之必备快捷键技能
- java容器源码--hashmap源码解读
- 深入分析JavaWeb 28 -- 使用JDBC对数据库进行CRUD
- java socket服务器端例子
- java的System.getProperty()方法可以获取的值
- java读取本地txt文件
- spring学习(二)---依赖注入
- myeclipse注册码生成代码