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

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中的逻辑与和逻辑或运算符采用“短路”方法进行计算,先求出运算符左边的表达式的值,对或运算如果为true,则整个表达式的结果为true,不必对运算符右边的表达式进行计算。同样,对与运算,如果左边的表达式的值为false,则不必对右边的表达式的值进行计算,整个表达式的值为false,”

两者都是或,但是不一样。

不同点:同与 *** 作类似,||表示短路或,当运算符左边的值为true时,右边的表达式不会进行运算。

举个例:

int i=0

if(3>2 || (i++)>1) i=i+1

System.out.println(i)

这段程序会打印出1,而不是打印出2。

因为在if的条件判断中,程序先判断第一个表达式3>2是否成立,结果3>2为真,那么按照逻辑来

说,无论后面一个表达式(i++)>1是否成立,整个或表达式肯定为真,因此程序就不去执行判断后面

一个表达式即(i++)>1了,所以这里i并没有自增1。然后程序执行到i=i+1,于是i变为1。最后打印

出1。

int i=0

if(3>2 | (i++)>1) i=i+1

System.out.println(i)

如果换做这样写,那么就是打印出2了,因为无论第一个条件3>2是否为真,程序都会去执行判断第

二个条件表达式,因此i++这个自增是会被执行的,再加上if内的i=i+1,所以最终i=2。

扩展资料

|与||的相同点:二者都表示或 *** 作,当运算符两边的 *** 作数任何一边的值为true时,其结果为true,当两边的值都为false时,其结果才为false。

&与&&的异同点。

相同点:二者都表示与 *** 作,当且仅当运算符两边的 *** 作数都为true时,其结果才为true,否则为false。

不同点:在使用&进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用&&进行运算时,当左边为false时,右边的表达式不会进行运算,因此&&被称作短路与。

注意事项:

逻辑运算符一般用于连接boolean类型的表达式或者值。

表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。

算术表达式:a + b

比较表达式:a == b(条件表达式)

参考资料

百度百科——Java


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12206081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存