逻辑运算

逻辑运算

什么是逻辑运算?

若想干某件事只由一个条件决定,则叫关系运算。比如:成绩大于 60 分,被评为优秀。

如果想干某件事由多个条件决定,则需要使用逻辑运算。比如:成绩大于 60 分,并且出勤率大于 99%,才被评为优秀。

逻辑运算符

运算符名称说明
&&逻辑与(并且)两个条件都为 true,结果才为 true
\|\|逻辑或(或者)只要有一个条件为 true,结果就为 true
!逻辑非(取反)非真则假,非假则真
int a = 56, b = 89, c = 9;
boolean b2 = a > b && c < b; // false && true = falseCode language: HTML, XML (xml)

逻辑运算建立在关系运算的基础之上。

真值表

逻辑与(&&)

aba && b
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

逻辑或(||)

aba || b
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

逻辑非(!)

a!a
truefalse
falsetrue

短路与非短路

与和或的运算除了有 &&、||,还有 &、|。两个符号的是短路运算符,单个符号的是非短路运算符。

短路的意思是:当第一个条件已经能够确定整个表达式的结果时,后续条件不再执行。

public static void main(String[] args) {
    // 短路与 &&:第一个条件为 false,后面的 c++ < 5 不再执行
    int a = 5, b = 6, c = 7;
    boolean r = a > b && c++ < 5;
    System.out.println(r); // false
    System.out.println(c); // 7,c++ 没有执行

    // 非短路或 |:无论第一个条件结果如何,后面的条件都会执行
    int a1 = 5, b1 = 6, c1 = 7;
    boolean r1 = a1 < b1 | c1++ < 5; // true | false = true
    System.out.println(r1); // true
    System.out.println(c1); // 8,c1++ 执行了
}Code language: JavaScript (javascript)

总结:短路运算符(&&、||)效率更高,推荐使用;非短路运算符(&、|)在逻辑运算中较少使用,但在位运算中很常见。

练习:判断年龄是否大于 18 岁

import java.util.Scanner;

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int age = scan.nextInt();
    boolean r = age > 18;
    System.out.println(r);
}Code language: JavaScript (javascript)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注