Java |与|| 、&与&& ,或与非的使用和区别

本文深入探讨了Java中逻辑运算符“与”和“或”的定义及应用,详细对比了&、&&、|、||的使用场景与区别,并通过实例代码解析其执行过程与短路特性。

目录

前言

一、“与”和“或”的定义区别

二、&、&& 使用和区别

三、|、||的使用和区别


前言

在平时的开发工作当中,经常会使用到if判断,当满足某一个或多个条件下就可以继续往下执行。在java中是使用|、||(或) 、&、&&(与)的代码符号来表示。下面一起来看他们的具体使用,分析他们之间的区别。

 

一、“与”和“或”的定义区别

(1)使用“与”操作,要求所有表达式的判断结果都是TRUE才为真;若有一个为FALSE,那么最终判断结果则为FALSE。

(2)使用“或”操作,要求所有表达式的判断结果都是FALSE才为假;若有一个为TRUE,那么最终的结果则为TRUE。

 

二、&、&& 使用和区别

1、&:前面表达式为真时,继续执行后面的表达式,最后再得出结果,代码如下:

 int  i = 0 ;

 if( 10==10 &  (i++)!= 1){
            System.out.print("结果为真"+i);
		 	
 
 }else{
            System.out.print("结果为假"+i);
 }

打印:结果为真1

小结:说明后面的表达式执行了,不影响判断结果

    int  i = 0 ;

    if( 10 !=10 & (i++) ==1){
            System.out.print("结果为真"+i);
 
    }else{
            System.out.print("结果为假"+i);
    }

打印:结果为假1  

小结:说明后面的表达式执行了,不影响判断结果。

 

2、&&:前面表达式为假时就不会再执行后面的表达式,直接得出FALSE的结果,代码如下:

 int  i = 0 ;

 if( 10 !=10 &&  (i++) == 1){
            System.out.print("结果为真"+i);
		 	
 
 }else{
            System.out.print("结果为假"+i);
 }

打印:结果为假0

小结:说明后面的表达式没有执行。

 

三、|、||的使用和区别

1、| :前面的表达式为真时,程序会继续执行后面的表达式,然后在得出TRUE的结果,代码如下:

int i=0;

if(10==10 | (i++)!=1){
            System.out.print("结果为真"+i);
}else{
            System.out.print("结果为假"+i);
}

打印:结果为真1

小结:说明后面的表达式执行了,但不影响判断结果。(与 & 相似)

int i = 0;

if(10!=10 | (i++)==1){
            System.out.print("结果为真"+i);

}else{
            System.out.print("结果为假"+i);
}

打印:结果为假1

小结:说明后面的表达式执行了,但并不影响结果。

 

2、||:前面的表达式结果为真,则程序不会再执行后面的表达式,直接得出TRUE的结果,代码如下:

int i=0;

if(10==10||(i++)!=0){
   System.out.print("结果为真     "+i);
}else{
   System.out.print("结果为假     "+i);
}

打印:结果为真   0

小结:说明后面的表达式未执行。

 


 

在编程中,逻辑运算符 `&&`(逻辑 `||`(逻辑按位运算符 `&`(按位 `|`(按位)虽然在符号上相似,但它们的功能、用途以及执行方式存在显著差异。 ### 逻辑 (`&&`) 按位 (`&`) 的区别 逻辑 `&&` 主要用于布尔表达式中,其运算结果是布尔类型。当两个操作数都为 `true` 时,结果才为 `true`;只要有一个操作数为 `false`,结果即为 `false`。此外,`&&` 运算符具有短路特性,即如果第一个操作数已经能够决定最终结果,则不会计算第二个操作数。例如,在表达式 `a && b` 中,如果 `a` 为 `false`,则不会继续计算 `b` 的值,直接返回 `false` [^2]。 相比之下,按位 `&` 是对两个整数的每一位进行运算,其结果也是整数。它将两个操作数的二进制形式逐位比较,只有当两个对应的二进制位都为 `1` 时,该位的结果才为 `1`,否则为 `0`。例如,`5 & 3` 的结果是 `1`,因为 `5` 的二进制表示为 `101`,`3` 的二进制表示为 `011`,两者按位后的结果为 `001` [^1]。 ### 逻辑 (`||`) 按位 (`|`) 的区别 逻辑 `||` 同样作用于布尔表达式,其结果也是布尔类型。当两个操作数中至少有一个为 `true` 时,结果为 `true`;只有当两个操作数都为 `false` 时,结果才为 `false`。`||` 也具有短路特性,即如果第一个操作数为 `true`,则不会计算第二个操作数。例如,在表达式 `a || b` 中,如果 `a` 为 `true`,则直接返回 `true` [^2]。 而按位 `|` 是对两个整数的每一位进行运算,其结果也是整数。它将两个操作数的二进制形式逐位比较,只要两个对应的二进制位中有一个为 `1`,该位的结果就为 `1`,只有当两个对应的二进制位都为 `0` 时,结果才为 `0`。例如,`5 | 3` 的结果是 `7`,因为 `5` 的二进制表示为 `101`,`3` 的二进制表示为 `011`,两者按位后的结果为 `111` [^1]。 ### 示例代码 下面是一些具体的代码示例,展示了这些运算符的实际应用: ```java public class LogicalOperatorsExample { public static void main(String[] args) { boolean a = true; boolean b = false; // 逻辑 System.out.println("Logical AND: " + (a && b)); // 输出 false // 逻辑 System.out.println("Logical OR: " + (a || b)); // 输出 true // 逻辑非 System.out.println("Logical NOT: " + (!a)); // 输出 false int x = 5; // 二进制: 101 int y = 3; // 二进制: 011 // 按位 System.out.println("Bitwise AND: " + (x & y)); // 输出 1 (二进制: 001) // 按位 System.out.println("Bitwise OR: " + (x | y)); // 输出 7 (二进制: 111) } } ``` ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾阳Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值