java中的短路与(&&)、短路或(||) 与 逻辑与(&)、逻辑或(|)有什么区别啊??

Python014

java中的短路与(&&)、短路或(||) 与 逻辑与(&)、逻辑或(|)有什么区别啊??,第1张

首先名称是不同的:

&&逻辑与||逻辑或它们都是逻辑运算符

& 按位与| 按位或它们都是位运算符

if(a==1&&b==2) 这是说既要满足a=1也要满足b=2

if(a==1||b==2) 这是说或者满足a=1或者要满足b=2

而a&b或者a|b则是二进制的与或运算

&同为1时为1,否则为0

|同为0时为0,否则为1

3&5则

0011

&0101

0001

等于1

3|5则

0011

|0101

0111

等于7

&&逻辑与 也叫做短路与 因为只要当前项为假,它就不往后判断了,直接认为表达式为假

||逻辑或 也叫做短路或 因为只要当前项为真,它也不往后判断了,直接认为表达式为真

Java中逻辑运算短路的理解:

短路 就是知如果左侧的表达式能确定运算后的结果,则不再计算右侧的表达式。

如(1>2)&&(2<3)   明明左侧已经为假 了   ,我 不用计算右侧我一定知道 此表达是为假,这样 就好似物理中的电流,当某处短路时,电流直接从一条路通过,而不再管另一条路。

看个例子:

public class Logic{

public static void main(String[] args){

int a = 1

int b = 1

if(a<b&&b<a++){

System.out.println(a>b&true)

System.out.println(a)

System.out.println("this's in my control")

else{

System.out.println("that's impossible")

System.out.println(a)

此处由于a<b为假 ,所以 后面的b<a++不会执行

此处的结果为

that's impossible

若假设a的初值为0,此时a<b成立,这时就要计算后面的值了

结果应该为和上面一样。

java中逻辑'或'用'|'或者‘||’表示,前者表示其中一个表示会执行'|'两边所有表达式,'||'表示可能只会执行'||'之前的一个表达式

String

str=null

if(str==null||str.length()>0)

他会执行str==null

满足了true

将不会执行

str.length>0

if(str==null|str.length()>0)

他会执行str==null,即便满足了true也会执行str.length>0,并且将报错