逻辑运算符与条件运算符(Fifth Day)

一.逻辑运算符

我将用代码的形式来让你理解他们两个的区别:

||和|的区别(或):
        ||具有短路功能,当||左边表达式为true的时候,直接判断整个||运算结果为true,||右边不再进行计算
        |不具有短路功能,不管|左边表达式的结果为true还是false,|右边表达式都要进行计算

package Day004.bdqn.casus;

public class Demo01 {

	public static void main(String[] args) {
		huo1();
		huo2();

	}
	public static void huo1() {
		int x = 8;
		int y = 9;
		System.out.println((++x != y) || (++x == y));// false
		System.out.println(x);// 10
		
		int a = 8;
		int b = 9;
		System.out.println((++a != b) | (++a == b));// false
		System.out.println(a);// 10
		
	}
	public static void huo2() {
		int x = 8;
		int y = 9;
		System.out.println((++x == y) || (++x != y));// true
		System.out.println(x);// 9
		
		int a = 8;
		int b = 9;
		System.out.println((++a == b) | (++a != b));// true
		System.out.println(a);// 10
	}
	/*
	 * &&和&的区别(与):
	 * 	&&具有短路功能,当&&左边表达式为false的时候,直接判断整个&&运算结果为false,&&右边不再进行计算
	 * 	&不具有短路功能,不管&左边表达式的结果为true还是false,&右边表达式都要进行计算
	 * 
	 * ||和|的区别(或):
	 * 	||具有短路功能,当||左边表达式为true的时候,直接判断整个||运算结果为true,||右边不再进行计算
	 * 	|不具有短路功能,不管|左边表达式的结果为true还是false,|右边表达式都要进行计算
	 * 
	 */
}

&&和&的区别(与):
      &&具有短路功能,当&&左边表达式为false的时候,直接判断整个&&运算结果为false,&&右边不再进行计算
     &不具有短路功能,不管&左边表达式的结果为true还是false,&右边表达式都要进行计算

package Day004.bdqn.casus;

public class Demo02 {

	public static void main(String[] args) {
		yu1();
		yu2();

	}
	public static void yu1() {
		int x = 8;
		int y = 9;
		System.out.println((++x != y) && (++x == y));// false
		System.out.println(x);// 9
		
		int a = 8;
		int b = 9;
		System.out.println((++a != b) & (++a == b));// false
		System.out.println(a);// 10
	}
	public static void yu2() {
		int x = 8;
		int y = 9;
		System.out.println((++x == y) && (++x != y));// true
		System.out.println(x);// 10
		
		int a = 8;
		int b = 9;
		System.out.println((++a == b) & (++a != b));// true
		System.out.println(a);// 10
	}
	/*
	 * &&和&的区别(与):
	 * 	&&具有短路功能,当&&左边表达式为false的时候,直接判断整个&&运算结果为false,&&右边不再进行计算
	 * 	&不具有短路功能,不管&左边表达式的结果为true还是false,&右边表达式都要进行计算
	 * 
	 * ||和|的区别(或):
	 * 	||具有短路功能,当||左边表达式为true的时候,直接判断整个||运算结果为true,||右边不再进行计算
	 * 	|不具有短路功能,不管|左边表达式的结果为true还是false,|右边表达式都要进行计算
	 * 
	 */
}

二.条件运算符

 条件运算符(三目运算符/三元运算符): 
              语法结构: 
                  条件?表达式1:表达式2; 
              执行规律: 
                  条件为true,执行表达式1
                  条件为false,执行表达式2

带大家做一个小练习:

public static void main(String[] args) {
		/*
		 * 根据分解后的数字之和,判断用户是否中奖。如果数字之和大于20,则中奖
		 */

		// 创建Scanner类对象
		Scanner sc = new Scanner(System.in);

		System.out.println("请输入4位会员卡号:");
		int cardId = sc.nextInt();
		System.out.println("您的会员卡号是:" + cardId);

		// 获取会员卡号各个位上的数字
		int geWei = cardId % 10;
		int shiWei = cardId / 10 % 10;
		int baiWei = cardId / 100 % 10;
		int qianWei = cardId / 1000;
		System.out.println("千位:" + qianWei + ",百位:" + baiWei + ",十位:" + shiWei
				+ ",个位:" + geWei);

		// 求各个位上的数字之和
		int sum = geWei + shiWei + baiWei + qianWei;
		System.out.println("会员卡号各个位上的数字之和:" + sum);
		
		//如果数字之和大于20,则中奖
		String result = sum > 20 ? "恭喜你,中奖了" : "很遗憾,没能中奖";
		System.out.println(result);

	}

 那么我输入一个数的时候会发生什么:

 什么?没有难度?来,我们来搞个进阶版。

嵌套条件运算符:
              语法规则:
                  条件1?(条件2?表达式1:表达式2):(条件3?表达式3:表达式4);
              执行规律:
                  条件1为true,继续判断条件2,条件2为true,执行表达式1,条件2为false,执行表达式2
                  条件1为false,继续判断条件3,条件3为true,执行表达式3,条件3为false,执行表达式4

 看不懂?不要怕,我会用代码来向你展示。

public static void main(String[] args) {
		
		//获取3个数中的最大值或者最小值
		int a = 10;
		int b = 30;
		int c = 20;
		
		int max =a>b?(a>c?a:c):(b>c?b:c);
		System.out.println("最大值:"+max);
		
		int min = a>b?(b>c?c:b):(a>c?c:a);
		System.out.println("最小值:"+min);
	}

看这个,记得结合前面的看,不然一不小心就会乱套了。

如果还有人不懂运算符的可以到我之前写的里面去看看。

        想看的点击这里           数据类型

                                           运算符的运用

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值