快捷搜索: 长连接 前端 源码 pan

&和&&的区别、| 和 || 的区别、~和 ~| 的区别

在java的逻辑运算符中,有这么四类:&&(短路与),&(与),|(或),||(短路或)。

&、|、~都是位操作符,而&&、|、~|都是逻辑操作!。

&&和&都是表示与,区别是&&只要第一个条件不满足,后面条件就不再判断。

&和&&都可以用作逻辑与的运算符,&&为短路与,&不是短路与。另外&可以做为整数的位运算符

例1:对于if(str != null&& !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。

&和&&都可以用作逻辑与的运算符,&&为短路与,&不是短路与。另外&可以做为整数的位运算符 例1:对于if(str != null&& !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。
2 If(x==33&++y>0) y 会增长, if(x==33 &&++y>0) 不会增长

||和|都是表示“或”,区别是||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断。

注意当他们进行运算的时候,&表示两个数先都变成二进制,然后两个数都是1才为1,其他为0

| 表示两个数只要有一个为1,就是1,其他都是0
 ~是一个单目运算符,用来对一个二进制位按位取反,即0变成1,1变成0,比如~00001111=11110000。
| 表示两个数只要有一个为1,就是1,其他都是0 ~是一个单目运算符,用来对一个二进制位按位取反,即0变成1,1变成0,比如~00001111=11110000。

!是逻辑非运算符,我们还是直接来看他的意思,!a的意思是:若a为真,则!为假,若a为假则!a为真。

经验分享 程序员 微信小程序 职场和发展