异或(XOR)运算符

当两个boolean类型的变量,locked ^ deleted,如果locked与deleted是不同的,返回true。如果两个操作数是相同的,则返回false。

因此,当我们需要同时检查两个不成立的条件时,可以使用异或运算符号。

假设我们有两个条件,A和B,下面显示了A ^ B 的可能值:

A ^ B 操作等于 (A && !B) || (!A && B) 。

在Java中使用

接下来让我看一下Java中的异或操作,当然我们可以使用 && 和 || 运算符,虽然这看起来很啰嗦。正如我们看到的那样,想象一下,有个Account类,它具有两个boolean属性:locked和 expired。现在我们想知道这个账户是被冻结了,还是过期了,而不是两者都是。

这段代码是很常见的,并没有什么问题,只是有点长而且看起来不是很直观。这个时候我们就可以考虑使用异或运算符,即比较二进制中两个值匹配位以返回结果。如果二进制中相同位置的两位具有相同的值,就为0,否则为1。

因此,我们可以使用下面的代码来替代:

不出我们所料,^ 运算符与其他按位运算符一样,都适用于每种基本类型。例如两个整数1和2,它们的二进制表示分别为0000 0001和0000 0010,然后,在它们之间使用 ^ 运算,将得出整数3:

在这两个数字中,第一位和第二位都不同,因此 ^ 运算符的结果为1。所以其他位置相同,

因此它的最终结果为 0000 0011 - 二进制表示整数3。

更有趣的用法

上面展示了1 ^ 2 == 3,这里我们将介绍一种做菜单权限的有趣方法。

通常我们每个菜单都有四种权限,查看、增加、修改、删除,这个时候我们就可以使用1、2、4、8分别表示。代码如下:

结论

通过上面的例子我们了解了异或运算符。我们看到,它提供了一种更简介的方法。

你还不知道Java异或运算符的妙用?相关推荐

  1. C语言 | 异或运算符的妙用

    按位异或 ( ^ ) , 可以在不额外创建变量的情况下,对两个整形变量的数值进行交换. 原理 在二进制中,对应的对应二进制位相同时异或为零,相异时异或为一. 运算过程如下图, 应用 (一):整形数值交 ...

  2. java uuid fasterxml_可笑!可悲!可叹!你竟然还不知道Java如何生成UUID?

    一个调皮的读者在之前我写的"我去"系列文章里留言调侃说,"二哥,你是无中生小王吗?"不不不,其实真不是的,小王是真实存在的,他一直和我并肩作战,不辞辛劳,让我既 ...

  3. 错误: 找不到或无法加载主类 helloworld_你还不知道Java的类加载机制?

    上篇分析完一个class文件后,我们再来回答几个问题 一.面试题                    1.什么是类的加载                                        ...

  4. java 异或_脚本语言系列之Java | Java中的运算符

    本文主要介绍java中的常见运算符,如算术运算符.赋值运算符.比较运算符.逻辑运算符.位运算符.三目运算符等. 一.几个概念 int a = 3 + 4; +.=就是操作符,是算术运算符,我们还有其他 ...

  5. java 异或 排序_Java的位运算符详解实例——与()、非(~)、或(|)、异或(^)...

    位运算符主要针对二进制,它包括了:"与"."非"."或"."异或".从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两 ...

  6. Java的位运算符具体解释实例——与(amp;)、非(~)、或(|)、异或(^)

    位运算符主要针对二进制,它包含了:"与"."非"."或"."异或".从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两 ...

  7. Java的位运算符详解——与()、非(~)、或(|)、异或(^)

    位运算符主要针对二进制,它包括了:"与"."非"."或"."异或".从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两 ...

  8. java浮点数数转二进制的数吗_都工作两年了,还不知道浮点数如何转二进制?...

    来吧,坐下聊 先前在前文 <老大说:谁要再用double定义商品金额,就自己收拾东西走> 中就已经痛彻心扉地聊过: 在处理诸如 订单交易.货币计算.以及商品金额慎用浮点数(double/f ...

  9. jav中什么是组织java程序_Javs ^运算符在Java中做什么?

    小编典典 Java中的^运算子 ^ 在Java中,"异或"运算符. 让我们5^6举个例子: (decimal) (binary) 5 = 101 6 = 110 --------- ...

  10. 【Java基础系列教程】第三章 Java变量与运算符

    一.Java程序基本结构 1.1 基本结构 Java程序基本结构示例代码: /** * 这里是文档注释 * 这是一个HelloWorld程序 */ public class HelloWorld {p ...

最新文章

  1. 【嵌入式】C语言高级编程-变参函数(08)
  2. 从零开始React项目架构(四)
  3. 小程序复制内容至剪贴板
  4. LeetCode(461)——汉明距离(JavaScript)
  5. python神经网络代码_11行Python代码建立神经网络
  6. (九)OpenCV Canny边缘检测
  7. 苹果xsmax怎么开机_苹果iPhone12怎么关机和开机 iPhone12开关机方式快捷键
  8. 翻译: 自动驾驶汽车技术:自动驾驶汽车如何工作?
  9. Jtable 表格按多列排序(支持中文汉字排序)
  10. Android 常用颜色值及半透明效果配置
  11. 1952-2018年中国各省份人均GDP(消涨处理)
  12. 1 10000用计算机计算,2019新个税计算器 工资一万要交多少税
  13. APOLLO基本介绍
  14. JVM调优理论与实践最佳结合
  15. FastReport关闭弹出的进度条窗口
  16. 计算机高中学校在哪,瑞金职业高中计算机UI学校在哪里
  17. Windows API GetLastError错误代码解释大全(最完整的一篇)
  18. SQL删除重复记录保留最大值
  19. CEC、ARC功能介绍
  20. NKOI 3124 珍珠吊坠

热门文章

  1. JAVA 解析json字符串常用方法
  2. JVM垃圾回收机制(一)
  3. QPainter基本绘图【1】
  4. Radon变换实现对图像倾斜校正 matlab
  5. python3爬虫验证码识别——超级鹰打码平台的使用实战:识别古诗文网登录页面中的验证码
  6. 简单6步,手把手搭建MinDoc文档库
  7. Java代理模式实现与原理详解(二)
  8. 主机DIY玩家的必备工具包
  9. 中文自然语言处理入门实战
  10. 2021-11-1-无法在此设备上激活WINDOWS因为无法连接到你的组织的激活服务器