第十四届蓝桥杯集训——JavaC组第七篇——逻辑运算符-LMLPHP

第十四届蓝桥杯集训——JavaC组第七篇——逻辑运算符


目录

第十四届蓝桥杯集训——JavaC组第七篇——逻辑运算符

逻辑运算符

逻辑与

逻辑或

逻辑运算法优先级

练习题:


逻辑运算符

逻辑运算与位运算不同,逻辑运算的与和或都是两个与或的符号,当然,如果单独一个就能不能这么叫了,应该叫位运算符,位运算符在讲完进制转换的时候我再来将,大家能更好的理解,不然肯定都蒙圈了。

逻辑与

&&两个与的符号,代表逻辑与,逻辑与前后两个表达式如果都为true则结果为true,如果有任何一个为false则结果为false;

题目,判断某个月份是否符合地球公转周期。

分析,满足地球公转周期的月份是在1月~12月内,故而我们需要判断0>month<=12,那么,我们就可以根据要求列出布尔表达式的写法,写法如下:

package com.item.action;

public class Action {

	public static void main(String[] args) {
		// 满足地球公转周期的月份
		int month = 5;// 判断月份是否在地球公转周期内
		//条件1、大于0
		boolean start = month > 0;
		//条件2、小于等于12,或直接小于13,因为是整数都行
		boolean end = month <= 12;
		//使用逻辑与判断,因为必须两个都满足才能是符合地球公转周期的月份
		boolean result = start && end;
		System.out.println(result);
	}
}

输出结果:

输出的结果是true代表5月份满足月份要求,故而此程序成立,咱们没有写错。

第十四届蓝桥杯集训——JavaC组第七篇——逻辑运算符-LMLPHP

逻辑或

||两个竖线代表逻辑或,逻辑或的前后两个表达式只要有一个是true,结果就是true,当然,两个true那就更是true了,但是如果两个都是false,那就没办法了,肯定返回false了。

示例:

我们使用一个特殊的表达式,判断x是否在x<-5,x>12的范围内。

package com.item.action;

public class Action {

	public static void main(String[] args) {
		// 这里先设一个值x=10,肯定不在{x<-5,x>12}中
		int x = 10;
		boolean left = x < -5;
		boolean right = x > 12;
		boolean result = left || right;
		System.out.println(result);

	}
}

结果如下:

第十四届蓝桥杯集训——JavaC组第七篇——逻辑运算符-LMLPHP

 !,逻辑非,就是代表不,咱们在关系运算符中看到过,有一个叫做【!=】不等于的符号,与这个非有些类似,但是不同的是他是一元运算符。不等于是二元运算符。并且非是控制一个变量的,不等于是处理两个变量的。

测试:

package com.item.action;

public class Action {

	public static void main(String[] args) {
		// 这里先设一个值x=10,肯定不在{x<-5,x>12}中
		int x = 10;
		boolean left = x < -5;
		boolean right = x > 12;
		boolean result = left || right;
        //添加了一个!
		System.out.println(!result);
	}
}

当我们在结果前添加了一个【!】非的符号时发现,我们出现的结果反了过来,证明非的作用也就相当于取反操作了。

第十四届蓝桥杯集训——JavaC组第七篇——逻辑运算符-LMLPHP

逻辑运算法优先级

三个符号的优先级与C语言的类似,但是他们都没有()的级别高。

练习题:

我们用判断闰年的案例来练习逻辑运算符的使用:

1582年以来的置闰规则:

解析:

1、能被4整除,但不能被100整除,所以这两个之间的关系是【&&】。

2、世纪闰年是【1】的基础上需要加上是否能被400整除的判断,关系是【||】。

我们将两句分析编辑成代码,就能看到如下的内容了:

package com.item.action;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int year = sc.nextInt();
		sc.close();
		boolean one = year % 4 == 0;
		boolean two = year % 100 != 0;
		boolean three = year % 400 == 0;
		boolean result = one && two || three;
		System.out.println(result);
	}
}
12-09 16:06