Java SE基础知识(四)--布尔值的运算符

Java SE 是什么,包括哪些内容(四)?

本文内容参考自Java8标准

一、代码运行机制相关的内容:

  • 1、 布尔类型的运算符以及运算规则(“你能用的运算符全在这里了!”)
    • ⑴、布尔值在计算机中的表示 布尔类型只有两个值:true false。
      实际上,计算机只能识别0和1,而布尔值又刚好只有两个值true和false,所以在计算机中,true实际上是1,false实际上是0。
    • ⑵、布尔值的运算 布尔值既不能与浮点数类型之间相互转换,也不能与整数类型之间相互转换,所以,实际上布尔值只能与布尔值之间进行运算
      • ①、关系运算符一共有2个("==","!="),结果类型是布尔类型。
          // A布尔类型关系运算符示例
          public boolean  a = falsepublic boolean b = truepublic c = false ;
          c = a !=b;
        
        直接上代码示例:
        Java SE基础知识(四)--布尔值的运算符_第1张图片
      • ②、逻辑取反运算符一共有1个("!"),结果类型是布尔类型。
        这个运算符只允许有一个运算数。是用来将两个布尔类型的值进行相互转换的,"!false"的结果为true。"!true"的结果为false。
        直接上代码示例了。
        Java SE基础知识(四)--布尔值的运算符_第2张图片
        从示例中可以看到,将对应的布尔类型值应用逻辑取反运算符,得到的都是相反的结果。一般来说,逻辑取反运算符多用于循环判断语句,用来控制程序的流程。
      • ③、逻辑运算符一共有3个(" & “、”^"、"|"),结果是布尔类型。
        下面直接上示例:
        Java SE基础知识(四)--布尔值的运算符_第3张图片
        Java SE基础知识(四)--布尔值的运算符_第4张图片
        Java SE基础知识(四)--布尔值的运算符_第5张图片
        根据示例能总结出:
        按位与("&")
        两个布尔类型值都为true,结果为true,只要有一个是false,结果就为false。
        按位或("|")
        两个布尔类型值只要有一个是true,结果就是true,只有两个都是false的情况下,结果才是false。
        按位异或("^")
        两个布尔类型值只要相同,结果就是false,只要不同,结果就是true。
        在实际的编程中,我们一般比较少利用按位与("&")、或("|")、异或(" ^ “)对布尔类型进行操作(因为它们一定会计算两个布尔类型的值,尽管可能在得到第一个类型的值的时候就能获知表达式的结果),更常用的是一种短路运算,名称分别为逻辑与(”&&")、逻辑或("||")(实际上,如果严谨的来说,"&"、"|"、"^“用于布尔类型运算的时候,可以称之为非短路"逻辑与”、“逻辑或”、“逻辑异或”,因为布尔类型的运算是一种逻辑表示)。从布尔类型运算的特点来看,我们很有可能在知道第一个布尔类型值的时候就能预知结果,第二个布尔类型值完全可以不需要知道,因为无论它是任何值,都不影响结果,所以"&&“和”||“就有这种效果,如果在已知第一个布尔类型的值的情况下就能得到结果,第二个布尔类型值将直接被忽略,不再进行计算。
        逻辑与(”&&")的运算规则:
        只要有一个值是false,结果一定是false,所以利用"&&“对布尔类型进行运算的时候,第一个布尔类型的值是false,那么第二个将直接被忽略。
        如果两个布尔类型的值都是true,结果才是true。也就是说,第一个值为true的情况下,才有必要对第二个值进行计算。
        逻辑或(”||")的运算规则:
        只要有一个值是true,结果一定是true,所以利用"||“对布尔类型进行运算的时候,第一个布尔类型的值是true,那么第二个将直接被忽略。
        如果两个布尔类型的值都是false,结果才是false。也就是说,第一个值为false的情况下,才有必要对第二个值进行计算。
        逻辑与(”&&")、逻辑或("||")是布尔类型特有的运算符!
      • ④、条件和("&&") 条件或("||") 运算符
        上面已经提及过了。
      • ⑤、条件运算符(" ? : “)
        条件运算符有两个符号,第一个是”?",第二个是":"。我们先来看一个具体的例子,直接上代码更快理解:
        int a = c>b?c:b;
        这个表达式的意思是:首先,声明了一个int类型的变量,标识符为"a",然后需要给这个a 赋值。一般我们都是直接int a = 5;就是直接使用字面量值(5这种就是所谓的"字面量值"),但是这里使用了另外的表达方式, 直接用一个变量赋值给变量,这也是允许的,那么后续的"c>b?c:b"是什么意思呢?之所以称之为条件运算符,是因为存在条件的,这个条件是什么?条件就是"c>b"这个表达式是否成立?如果成立那么整个表达式"c>b?c:b"的结果就是":“左边的值,也就是c,如果不成立,就是b。所以完整的描述的就是:我在给int类型的变量a赋值,但是有两个选择,一个是c,一个是b,所以在赋值的时候,先比较一下大小,如果c大于b,则将变量c的值赋给变量a,否则将变量b的值赋给变量a。
        我们可以看出,条件运算符以”?“为中心,左边的是一个结果为boolean的条件表达式,右边是结果的选择,结果的选择仅限两种,用”:“分隔,如果boolean结果为true,则结果为”:",否则为":"右边。
        实际操作示例:
        Java SE基础知识(四)--布尔值的运算符_第6张图片
        条件运算符在实际中最常用的例子就是翻页功能的实现。
        比如,你规定一页只能显示10条数据,那么,可能存在两种情况,一种情况是总的数据量刚好能整除10,那么你的总页数,就是总数据量除以10,还有一种情况就是总的数据量不能整除10,还有余数,比如63,那么你的总页数就需要在总数据量除以10得出的结果再+1。
        所以你经常能看见类似的表达:
        // 声明一个变量保存总的页数
            int PageNumber = 0//声明一个变量保存总的数据量
            int TotalPage;
        //得出计算总页数的计算式
            int PageNumber = TotalPage%10==0?
             TotalPage/10:TotalPage/10+1;
           //用总数据量对10进行取余运算("%"也叫模运算),如果余数为0,
           //说明可以整除,所以总页数就是总数据量除以10的结果,
           //如果余数不为0,说明不能整除,那么就需要在除法运算
           //的结果上+1;
        
        布尔类型的值会在以下几种流程控制语句中常用:
        if 语句
        while 语句
        do…while 语句
        for 语句
        也只有结果为boolean的表达式才能用于流程控制语句中。
        在Java中,其他任何类型都不能转换为boolean类型。

PS:时间有限,有关Java SE的内容会持续更新!今天就先写这么多,如果有疑问或者有兴趣,可以加QQ:2649160693,并注明CSDN,我会就博文中有疑义的问题做出解答。同时希望博文中不正确的地方各位加以指正!

你可能感兴趣的:(Java,SE,Java,SE,基础)