在编程语言的设计之初,它们除了可以进行数学计算,还常常用于逻辑推理和条件判断。为了实现逻辑判断的功能,Java引入了一种布尔类型boolean,用来表示“真”和“假”。该类型的变量只允许两个取值,即true和false,其中true对应真值,而false对应假值。
如同数值变量拥有加减乘除四则运算那样,布尔变量也拥有逻辑方面的四则运算,包括“非”、“与”、“或”、“异或”,下面分别加以介绍。
1、“非”运算求的是某布尔变量的对立值,若原变量值为true,则“非”运算的结果为false,若原变量值为false,则“非”运算的结果为true。Java把符号“!”加在布尔变量前面,表示这里进行“非”运算。
2、“与”运算求的是两个布尔变量的逻辑交集,只有两个变量都为true时,运算结果才为true,其余情况的运算结果都为false。Java把符号“&”放在两个布尔变量之间,这里表示进行“与”运算。
3、“或”运算求的是两个布尔变量的逻辑并集,只要两个变量有一个为true,运算结果就为true;只有两个变量都为false时,运算结果才为false。Java把符号“|”放在两个布尔变量之间,表示这里进行“或”运算。
4、“异或”运算求的是两个布尔变量的逻辑相异,当两个变量同为true或者同为false时,运算结果为false;当两个变量一个为true另一个为false时,运算结果为true。Java把符号“^”放在两个布尔变量之间,表示这里进行“异或”运算。
下面是对布尔变量进行“非”、“与”、“或”、“异或”等逻辑运算的代码例子:

		// boolean表示布尔类型,该类型的变量只允许两个取值,即true和false
boolean zhen = true; // true表示为真
System.out.println("zhen="+zhen);
boolean jia = false; // false表示为假
System.out.println("jia="+jia);
// “!”加在布尔变量前面表示进行“非”运算
boolean not = !zhen;
System.out.println("not="+not);
// “&”放在两个布尔变量之间表示进行“与”运算
boolean and = zhen&jia;
System.out.println("and="+and);
// “|”放在两个布尔变量之间表示进行“或”运算
boolean or = zhen|jia;
System.out.println("or="+or);
// “^”放在两个布尔变量之间表示进行“异或”运算
boolean xor = zhen^jia;
System.out.println("xor="+xor);

上述的四则逻辑运算当中,“与”、“或”、“异或”三种都需要两个布尔变量才能判断,这意味着:倘若某个变量既参与逻辑运算,又能保存运算结果,此时的逻辑运算就转变为对该变量的自处理。譬如,对一个布尔变量与另一个布尔值进行“与”运算,且运算结果仍旧保存在该变量中,则可使用运算符“&=”简化赋值操作。如同数值计算“x = x+7”等价于“x += 7”那般,也存在布尔计算“value = value&false”简化成“value &= false”的情况。依此类推,对布尔变量自身进行或运算,可利用新的赋值运算符“|=”;对布尔变量自身进行异或运算,可利用新的赋值运算符“^=”。这些逻辑赋值符的详细应用代码如下所示:

		boolean value = true;
System.out.println("value="+value);
// 对布尔变量进行“与”运算,且运算结果仍旧保存在该变量中,则可使用运算符“&=”
value &= false; // 该行代码等同于 value = value&false;
System.out.println("value="+value);
// 对布尔变量进行“或”运算,且运算结果仍旧保存在该变量中,则可使用运算符“|=”
value |= true; // 该行代码等同于 value = value|true;
System.out.println("value="+value);
// 对布尔变量进行“异或”运算,且运算结果仍旧保存在该变量中,则可使用运算符“^=”
value ^= false; // 该行代码等同于 value = value^false;
System.out.println("value="+value);

  

Java开发笔记(十二)布尔变量论道与或非的更多相关文章

  1. Java开发笔记(二十八)布尔包装类型

    前面介绍了数值包装类型,因为不管是整数还是小数,它们的运算操作都是类似的,所以只要学会了Integer的用法,其它数值包装类型即可一并掌握.但是对于布尔类型boolean来说,该类型定义的是“true ...

  2. Java开发笔记(二十五)方法的输入参数

    前面通过main方法介绍了方法的定义形式,对于方法的输入参数来说,还有几个值得注意的地方,接下来分别对输入参数的几种用法进行阐述.一个方法可以有输入参数,也可以没有输入参数,倘若无需输入参数,则方法定 ...

  3. Java开发笔记(二十六)方法的输出参数

    前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允 ...

  4. Java开发笔记(二十九)大整数BigInteger

    早期的编程语言为了节约计算机的内存,给数字变量定义了各种存储规格的数值类型,比如字节型byte只占用一个字节大小,短整型short占用两个字节大小,整型int占用四个字节大小,长整型long占用八个字 ...

  5. Java开发笔记(二十四)方法的组成形式

    经过前面的学习,我们发现演示的Java代码越来越复杂,而且每个例子的代码都堆在入口方法main内部,这会导致如下问题:1.一个方法内部堆砌了太多的代码行,看着费神,维护起来也吃力:2.部分代码描述的是 ...

  6. Java开发笔记(二十三)数组工具Arrays

    数组作为一种组合形式的数据类型,必然要求提供一些处理数组的简便办法,包括数组比较.数组复制.数组排序等等.为此Java专门设计了Arrays工具,该工具包含了几个常用方法,方便程序员对数组进行加工操作 ...

  7. Java开发笔记(二十七)数值包装类型

    方法的出现缘起优化代码结构,但它的意义并不局限于此,正因为有了方法定义,编程语言才更像一门能解决实际问题的工具,而不仅仅是只能用于加减乘除的计算器.在数学的发展过程中,为了表示四则运算,人们创造了加减 ...

  8. Java开发笔记(二十二)神奇的冒号

    Java中的标点符号主要有两类用途,一类是运算符,包括加号+.减号-.乘号*.除号/.取余号%.等号=.大于号>.小于号<.与号&.或号|.非号!.异或号^等等,另一类则是分隔符, ...

  9. Java开发笔记(二十)一维数组的用法

    之前介绍的各类变量都是单独声明的,倘若要求定义相同类型的一组变量,则需定义许多同类型的变量,显然耗时耗力且不宜维护.为此,编程语言引入了数组的概念,每个数组都由一组相同类型的数据构成,对外有统一的数组 ...

随机推荐

  1. java 加解密

    import javax.crypto.*; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingExc ...

  2. Android APK反编译:APKtool使用详解

    导言:在我们安卓开发当中,我们不仅需要掌握基础的开发技能,也需要掌握软件的安全技能,这样才可以让我们的软件能够成为一款能够真正可以进行发布的软件,同时也可以让自己的核心技术不会被别人所盗取. 第一步. ...

  3. 超有料丨小白如何成功逆袭为年薪30万的Web安全工程师

    今天的文章是一篇超实用的学习指南,尤其是对于即将毕业的学生,新入职场的菜鸟,对Web安全感兴趣的小白,真的非常nice,希望大家能够好好阅读,真的可以让你少走很多弯路,至少年薪30万so easy! ...

  4. kibana研究

    概述 Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索.查看交互存储在Elasticsearch索引中的数据.它操作简单,基于浏览器的用户界面可以快速创建仪表板(das ...

  5. [Swift]LeetCode400. 第N个数字 | Nth Digit

    Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... Note:n is ...

  6. JDBC也就那么回事

    JDBC 一.JDBC概述 为什么要使用JDBC? JDBC:Java DataBase Connectivity,是SUN公司提供的一套操作数据库的标准规范(技术). JDBC与数据库驱动的关系:接 ...

  7. python网络-多进程(21)

    一.什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实 ...

  8. python高级-迭代器(18)

    一.什么是迭代器 迭代是访问集合元素的⼀种⽅式. 迭代器是⼀个可以记住遍历的位置的对象. 迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束. 迭代器只能往前不会后退 二.可迭代对象 直 ...

  9. 又拍云 API 使用的那些小事

    又拍云提供了丰富的 API 调用,为了减少用户在初次接入时可能会遇到的坑”,本文将对又拍云常用的 API 使用方法做个简单的梳理,力求让业务接入变得更简单,更高效. 目前我们的 API 主要有四大类, ...

  10. 微信扫码登录(3)---授权码code获取用户基本信息

    授权码code获取用户基本信息 上一遍已经获得微信回调的code,网址:回调获取code     那这篇通过code和其它参数去获得用户基本信息. 1.UserServiceImpl关键代码 @Ove ...