【JAVA-C】程序练习题-&、&&、|、||

这篇博客详细解释了Java中的逻辑运算符&与&&,以及|与||的区别。在短路逻辑中,&&和||分别在左侧表达式为false时停止右侧表达式的计算,从而提高效率。开发实践中,通常推荐使用&&和||来避免不必要的计算。文章通过实例展示了运算符的用法,并给出了对应的程序测试结果。
摘要由CSDN通过智能技术生成

逻辑运算符操作的都是boolean类型(T or F)的变量:&  && |  || ! ^

1.区分& (与) 与 &&(短路与) :

  • 相同点1:& 与  && 的运算结果相同
  • 相同点2:当符号左边是true时,二者都会执行符号右边的运算
  • 不同点:当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。
  • 开发中,推荐使用&&
//北京表示进入if()
//南京表示进入else()
&
true  & true   YES true
false & true   NO  false
false & false  NO  false
true  & false  NO  false
左为真,&/&&左右都运算;
左为假,&左右都运算;&&左运算;
&&
true  & true   YES true
false & true   NO  false
false & false  NO  false
true  & false  NO  false
---------- java ----------
************  &    ***************
true & true
我现在在北京
num1 = 11
***********************************
false & true
我现在在南京
num1 = 12
***********************************
false & false
我现在在南京
num1 = 13
***********************************
true & false
我现在在南京
num1 = 14

************  &&   ***************
true  && true
我现在在北京
num1 = 15
***********************************
false && true
我现在在南京
num1 = 15
***********************************
false && false
我现在在南京
num1 = 15
***********************************
true && false
我现在在南京
num1 = 16
 END ***********************************
  • 对应程序测试 
class LogicTest {
	public static void main(String[] args) {			
		System.out.println("************  &    ***************");
		System.out.println("true & true");
		boolean b1 = true;
		int num1 = 10;
		if(b1 & (num1++ > 0)){
			System.out.println("我现在在北京");
		}else{
			System.out.println("我现在在南京");
		}
		System.out.println("num1 = " + num1);
		System.out.println("***********************************");
		System.out.println("false & true");
		boolean b2 = false;
		
		if(b2 & (num1++ > 0)){
			System.out.println("我现在在北京");
		}else{
			System.out.println("我现在在南京");
		}
		System.out.println("num1 = " + num1);		
		System.out.println("***********************************"); 
		System.out.println("false & false");
		boolean b3 = false;		
		if(b3 & (num1++ < 0)){
			System.out.println("我现在在北京");
		}else{
			System.out.println("我现在在南京");
		}
		System.out.println("num1 = " + num1);
		System.out.println("***********************************");
		System.out.println("true & false");
		boolean b4 = true;	
		if(b4 & (num1++ < 0)){
			System.out.println("我现在在北京");
		}else{
			System.out.println("我现在在南京");
		}
		System.out.println("num1 = " + num1);


		System.out.println("************  &&   ***************");
		System.out.println("true && true");
		boolean a1 = true;
		if(a1 && (num1++ > 0)){
			System.out.println("我现在在北京");
		}else{
			System.out.println("我现在在南京");
		}
		System.out.println("num1 = " + num1);
		System.out.println("***********************************");
		System.out.println("false && true");
		boolean a2 = false;
		if(a2 && (num1++ > 0)){
			System.out.println("我现在在北京");
		}else{
			System.out.println("我现在在南京");
		}
		System.out.println("num1 = " + num1);
		System.out.println("***********************************");
		System.out.println("false && false");
		boolean a3 = false;
		if(a3 && (num1++ < 0)){
			System.out.println("我现在在北京");
		}else{
			System.out.println("我现在在南京");
		}
		System.out.println("num1 = " + num1);
		System.out.println("***********************************"); 
		System.out.println("true && false");
		boolean a4 = true;		
		if(a4 && (num1++ < 0)){
			System.out.println("我现在在北京");
		}else{
			System.out.println("我现在在南京");
		}
		System.out.println("num1 = " + num1);

	}
}

2.区分:|(或) 与 ||(短路或) 

  • 相同点1:| 与  || 的运算结果相同
  • 相同点2:当符号左边是false时,二者都会执行符号右边的运算
  • 不同点3:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
  • 开发中,推荐使用||
  • 将上述测试文件&修改|即可,不做重复。
//北京表示进入if()
//南京表示进入else()
|
true  | true   YES true
false | true   YES true
false | false  NO  false
true  | false  YES true
左为假,|/||左右都运算;
左为真,|左右都运算;||左运算;
||
true  | true   YES true
false | true   YES true
false | false  NO  false
true  | false  YES true
---------- java ----------
************  |   ***************
true | true
我现在在北京
num1 = 11
***********************************
false | true
我现在在北京
num1 = 12
***********************************
false | false
我现在在南京
num1 = 13
***********************************
true | false
我现在在北京
num1 = 14
************  ||   ***************
true  || true
我现在在北京
num1 = 14
***********************************
false || true
我现在在北京
num1 = 15
***********************************
false && false
我现在在南京
num1 = 16
***********************************
true || false
我现在在北京
num1 = 16
 END ***********************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MengYa_DreamZ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值