• 逻辑操作符符与按位操作符的这些知识,你必须要知道!


    无论何时,都要保持足够的警惕性。比你聪明的人都在努力,再不动起来,我们就老了。欢迎大家扫描下方的二维码关注我的微信公众号,与我一起学习Java。

    扫一扫,关注我

    温故知新

    上一节,我们讲了Java中的算术操作符、自增自减操作符以及关系操作符,并通过案例进行了相应的说明。请回答以下几个问题:

    1. +/-操作符在作为一元操作符时,它们的作用分别是什么?
    2. 假设有变量a,那么a++和++a,其含义有何不同?
    3. 关系操作符适用于所有基本数据类型吗?
    4. 请说说==和equals有什么异同。

    更上一层楼

    今天我们继续讲解Java中操作符的相关知识,主要涉及两块的内容:

    1. 逻辑操作符
    2. 按位操作符

    逻辑操作符

    逻辑操作符负责连接多个关系表达式,其能根据参数的逻辑关系,生成一个boolean值。逻辑操作符有与(&&)或(||)非(!)。“与”、“或”、“非”只能应用于boolean值,而不能将一个非布尔值当作布尔值在逻辑表达式中使用。

    1. &&操作符表示所有的关系表达式都为true时才为true
    2. ||操作符表示只要有一个关系表达式为true就为true
    3. !操作符表示取当前的相反量
    4. 逻辑操作符混合使用时,可以使用括号()来确定优先级
    public class LogicExp {
      public static void main(String [] args) {
        //&& 所有的关系表达式都为true时才为true
        System.out.println(5>3&&5>4);
        System.out.println(5>3&&5>6);
        //|| 只要有一个关系表达式为true就为true
        System.out.println(5>3||5>4);
        System.out.println(5>3||5>6);
        //! 取当前的相反量
        System.out.println(5>3);
        System.out.println(!(5>3));
        //混合使用逻辑操作符()内的表达式优先进行运算
        System.out.println((5>6&&5>3) || 5>4);
        System.out.println(5>6 && (5>3||5>4));
      }
    }
    //output
    //true
    //false
    //true
    //true
    //true
    //false
    //true
    //false
    

    &&||操作符往往还有短路的作用,短路的作用体现在:比如说&&操作符,如果第一个表达式为false,那么它便不会去对第二个表达式进行运算||操作符具有同样的特性,如果第一个表达式为true,那么它便不会去对第二个表达式进行运算

    public class LogicExp {
      public static void main(String [] args) {
        System.out.println("&&短路操作:"+(test3()&&test1()));
        System.out.println("====================================")
        System.out.println("||短路操作:"+(test1()||test2()));
      }
      public static test1() {
        System.out.println("5>3:"+(5>3));
        return (5>3);
      }
      public static test2() {
        System.out.println("5>4:"+(5>4));
        return (5>4);
      }
      public static test3() {
        System.out.println("5>6:"+(5>6));
        return (5>6);
      }
    }
    //output
    //5>6:false
    //&&短路操作:false
    //====================================
    //5>3:true
    //||短路操作:true
    

    因此在写逻辑表达式的时候,把重要判断的条件表达式放在前面优先判断,可以减少不必要的运算,从而获得潜在的性能提升。

    按位操作符

    除了Java中的八种基本数据类型外,还有一个比这些基本数据类型还小的单位bit(位),如1 byte = 8 bit。按位操作符就是对这个二进制位进行操作。按位操作符会对两个参数中对应的位执行布尔(boolean)代数运算(因为二进制位只可能为0或者为1),并生成一个boolean结果。

    按位操作符主要分为&(按位与)|(按位或)^(按位异或)~(非)四种。

    1. &(按位与):如果两个输入为都是1,则生成1,否则生成0。
      假设输入值的二进制数是下列的输入值1和输入值2
      输入值1:00011010
      输入值2:00110011
      => 比较后的结果是:00010010
      
    2. |(按位或):只要两个输入位有一个为1,则生成1;只有两个输入位都是0的情况下才会生成0。
      假设输入值的二进制数是下列的输入值1和输入值2
      输入值1:00011010
      输入值2:00110011
      => 比较后的结果是:00111011
      
    3. ^(按位异或):如果两个输出位有且只有一个为1,则生成1,否则生成0.
      假设输入值的二进制数是下列的输入值1和输入值2
      输入值1:00011010
      输入值2:00110011
      => 比较后的结果是:00101001
      
    4. ~(非):属于一元操作符,只对一个操作数进行操作,取其相反值。如0的相反值是1。
      假设输入值的二进制数是下列的输入值1
      输入值1:00011010
      => 取反后的结果是:11100101
      

    对于boolean值而言,由于其作为一种单bit值,按位操作符具有与逻辑操作符相同的效果,只是其没有逻辑操作符的短路功能

    每日一结

    今天主要讲解了逻辑操作符和按位操作符,对boolean类型而言,两种操作符具有大致相同的逻辑判断效果,但是也有一定的区别,这是我们需要谨记的地方。

    而在使用逻辑操作符时,一定要记得,把优先级高的、更顶层的关系表达式放在前面,这样能够避免不必要的运算,从而一定程度上提高程序性能。

    如果觉得我写的内容对你有帮助,欢迎关注我的微信公众号:

    扫一扫,关注我

  • 相关阅读:
    小、快、简、易、强的“银弹”— fastm
    使用Creative suite 3和Flex Builder3实现Flex 3的换肤
    Apache HTTP Server 与 Tomcat 的三种连接方式介绍
    iframe自动适应付窗口的大小变换
    Flash网络游戏开发入门经验共享
    比较详细的 Linux Top 命令解析
    HttpContext是干什么的
    asp.net,cookie,写cookie,取cookie 的方法
    为什么我们不要 .NET 程序员
    在Ubuntu上安装使用深度影音&深度音乐(推荐)
  • 原文地址:https://www.cnblogs.com/lurker-yaojiang/p/10488895.html
Copyright © 2020-2023  润新知