第4节运算符(下)

逻辑运算符

  逻辑运算符概述

  在数学中,一个数据x,大于3,小于6,我们可以这样来进行表示:3<x<6

  在Java中,需要把上面的式子先进行拆解,再进行合并表达。

  拆解为:x>3x<6

  合并为:x>3&&x<6

  &&其实就是一个逻辑运算符。

  我们可以这样说,逻辑运算符,是用来连接关系表达式的运算符。

  当然,逻辑运算符也可以直接连接布尔类型的常量或者变量

  

  &  逻辑与    a&b,a和b都是true,结果为true,否则为false

  |  逻辑或      a|b,a和b都是false,结果为false,否则为true

  ^  逻辑异或     a^b,a和b结果不同为true,结果相同为false

  !  逻辑非     !a,结果和a的结果正好相反

/*
    逻辑运算符
*/
public class OperatorDemo07{
    public static void main(String[] args){
        //定义变量
        int i=10;
        int j=20;
        int k=30;
        
        //& 有false则false
        System.out.println((i>j)&(i>k)); //false & false
        System.out.println((i<j)&(i>k)); //true & false
        System.out.println((i>j)&(i<k)); //false & true
        System.out.println((i<j)&(i<k)); //true & true
        System.out.println("------------");
        
        //| 有true则true
        System.out.println((i>j)|(i>k)); //false | false
        System.out.println((i<j)|(i>k)); //true | false
        System.out.println((i>j)|(i<k)); //false | true
        System.out.println((i<j)|(i<k)); //true | true
        System.out.println("------------");
        
        //^ 相同为false,不同为true
        System.out.println((i>j)^(i>k)); //false ^ false
        System.out.println((i<j)^(i>k)); //true ^ false
        System.out.println((i>j)^(i<k)); //false ^ true
        System.out.println((i<j)^(i<k)); //true ^ true
        System.out.println("------------");
        
        //!结果正好相反
        System.out.println((i>j)); //false
        System.out.println(!(i>j)); //!false
        System.out.println(!!(i>j)); //!!false
        System.out.println(!!!(i>j)); //!!!false
    }
}

 

短路逻辑运算符

  &&  短路与    作用和&相同,但是有短路效果

  ||     短路或    作用和|相同,但是有短路效果

/*
    短路逻辑运算符
*/
public class OperatorDemo08{
    public static void main(String[] args){
        //定义变量
        int i=10;
        int j=20;
        int k=30;
        
        //&& 有false则false
        System.out.println((i>j)&&(i>k)); //false & false
        System.out.println((i<j)&&(i>k)); //true & false
        System.out.println((i>j)&&(i<k)); //false & true
        System.out.println((i<j)&&(i<k)); //true & true
        System.out.println("------------");
        
        //|| 有true则true
        System.out.println((i>j)||(i>k)); //false | false
        System.out.println((i<j)||(i>k)); //true | false
        System.out.println((i>j)||(i<k)); //false | true
        System.out.println((i<j)||(i<k)); //true | true
        System.out.println("------------");
        
        //&&和&
        //System.out.println((i++ > 100)&(j++ > 100));//false & false
        //System.out.println("i:"+i+",j:"+j);//运行结果false i:11,j:21
        System.out.println((i++ > 100)&&(j++ > 100));//false && false
        System.out.println("i:"+i+",j:"+j);//运行结果false i:11,j:20
    }
}

  注意事项

  逻辑与&,无论左边真假,右边都要执行

  短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行

  逻辑或|,无论左边真假,右边都要执行

  短路或||,如果左边为假,右边执行;如果左边为真,右边不执行

  

  最常用的逻辑运算符:&&,||,!

 

三元运算符

  格式:关系表达式?表达式1表达式2;

  范例:a>b?a:b;

  计算规则:

    首先计算关系表达式的值

    如果值为true表达式1的值就是运行结果

    如果值为false表达式2的值就是运行结果

/*
    三元运算符
*/
public class OperatorDemo09{
    public static void main(String[] args){
        //定义两个变量
        int a=10;
        int b=20;
        
        //获取两个数据中的较大值
        int max = a > b ? a : b;
        
        //输出结果
        System.out.println("max:"+max);
    }
}

 

  

 

posted @ 2021-01-17 11:16  Testtext  阅读(120)  评论(0)    收藏  举报