&&和&的联系与区别
2015-09-16 00:23
387 查看
&&和&的联系与区别
联系:
都是逻辑与运算符,双目运算符,比如 a = 1; if(a == 0 && ++b > 0) 只有两边都为true时,整个式子为true。
区别:
1、&&具有短路的功能,比如 a = 1; if(a == 0 && ++b > 0) ,a==0为false,++b不会进行判断,也就是b的值不会增加。
&没有短路功能,运算符两边都会运算,a = 1; if( a==0 & ++b > 0),即使a==0是false,b的值也会加1;
2、&还可作为位运算,当&两边的表达式的值不是boolean类型值时,表示位运算。将十进制转换为二进制进行按位与操作。我们通 常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31
& 0x0f的结果为0x01。
联系:
都是逻辑与运算符,双目运算符,比如 a = 1; if(a == 0 && ++b > 0) 只有两边都为true时,整个式子为true。
区别:
1、&&具有短路的功能,比如 a = 1; if(a == 0 && ++b > 0) ,a==0为false,++b不会进行判断,也就是b的值不会增加。
&没有短路功能,运算符两边都会运算,a = 1; if( a==0 & ++b > 0),即使a==0是false,b的值也会加1;
2、&还可作为位运算,当&两边的表达式的值不是boolean类型值时,表示位运算。将十进制转换为二进制进行按位与操作。我们通 常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31
& 0x0f的结果为0x01。
public class Test { public static void main(String[] args) { int a = 1; int b = 10; int c = 10; if (a == 0 && ++b > 0) {//&&有短路功能,b值不变 } else { System.out.println("--b-->" + b); } if (a == 0 & ++c > 0) {//&两边都会运算,c值加1 } else { System.out.println("--c-->" + c); } } }运算结果如下:
--b-->10 --c-->11
相关文章推荐
- 我与单片机的日子——(二)
- 9月01日课程作业(练习)-Linux文件系统管理
- POJ 1035 解题报告
- html5
- 编译语言 compare 解释性语言
- runtime跳转界面以及动态添加属性
- POJ - 1988 Cube Stacking(带权并查集)
- 利用锚点制作简单索引效果
- 前端性能优化之预加载
- 从ISO创建实例、实例生成快照,创建镜像(基于openstack kilo平台、KVM虚拟化)
- [iOS翻译] Cocoa编码规范
- C#-初识委托
- Aizu 2541 Magical Bridges
- Android发展演变与开发环境搭建
- 使用Goldengate 实现Oracle for Oracle 单向数据同步
- 浅谈jsp的Session的生命周期
- leetcode笔记:Climbing Stairs(斐波那契数列问题)
- 'gbk' codec can't encode character
- MySQL数据库应不应该拿掉所有的外键约束?
- 自动分表