你还不知道Java异或运算符的妙用?
异或(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异或运算符的妙用?相关推荐
- C语言 | 异或运算符的妙用
按位异或 ( ^ ) , 可以在不额外创建变量的情况下,对两个整形变量的数值进行交换. 原理 在二进制中,对应的对应二进制位相同时异或为零,相异时异或为一. 运算过程如下图, 应用 (一):整形数值交 ...
- java uuid fasterxml_可笑!可悲!可叹!你竟然还不知道Java如何生成UUID?
一个调皮的读者在之前我写的"我去"系列文章里留言调侃说,"二哥,你是无中生小王吗?"不不不,其实真不是的,小王是真实存在的,他一直和我并肩作战,不辞辛劳,让我既 ...
- 错误: 找不到或无法加载主类 helloworld_你还不知道Java的类加载机制?
上篇分析完一个class文件后,我们再来回答几个问题 一.面试题 1.什么是类的加载 ...
- java 异或_脚本语言系列之Java | Java中的运算符
本文主要介绍java中的常见运算符,如算术运算符.赋值运算符.比较运算符.逻辑运算符.位运算符.三目运算符等. 一.几个概念 int a = 3 + 4; +.=就是操作符,是算术运算符,我们还有其他 ...
- java 异或 排序_Java的位运算符详解实例——与()、非(~)、或(|)、异或(^)...
位运算符主要针对二进制,它包括了:"与"."非"."或"."异或".从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两 ...
- Java的位运算符具体解释实例——与(amp;)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包含了:"与"."非"."或"."异或".从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两 ...
- Java的位运算符详解——与()、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:"与"."非"."或"."异或".从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两 ...
- java浮点数数转二进制的数吗_都工作两年了,还不知道浮点数如何转二进制?...
来吧,坐下聊 先前在前文 <老大说:谁要再用double定义商品金额,就自己收拾东西走> 中就已经痛彻心扉地聊过: 在处理诸如 订单交易.货币计算.以及商品金额慎用浮点数(double/f ...
- jav中什么是组织java程序_Javs ^运算符在Java中做什么?
小编典典 Java中的^运算子 ^ 在Java中,"异或"运算符. 让我们5^6举个例子: (decimal) (binary) 5 = 101 6 = 110 --------- ...
- 【Java基础系列教程】第三章 Java变量与运算符
一.Java程序基本结构 1.1 基本结构 Java程序基本结构示例代码: /** * 这里是文档注释 * 这是一个HelloWorld程序 */ public class HelloWorld {p ...
最新文章
- 【嵌入式】C语言高级编程-变参函数(08)
- 从零开始React项目架构(四)
- 小程序复制内容至剪贴板
- LeetCode(461)——汉明距离(JavaScript)
- python神经网络代码_11行Python代码建立神经网络
- (九)OpenCV Canny边缘检测
- 苹果xsmax怎么开机_苹果iPhone12怎么关机和开机 iPhone12开关机方式快捷键
- 翻译: 自动驾驶汽车技术:自动驾驶汽车如何工作?
- Jtable 表格按多列排序(支持中文汉字排序)
- Android 常用颜色值及半透明效果配置
- 1952-2018年中国各省份人均GDP(消涨处理)
- 1 10000用计算机计算,2019新个税计算器 工资一万要交多少税
- APOLLO基本介绍
- JVM调优理论与实践最佳结合
- FastReport关闭弹出的进度条窗口
- 计算机高中学校在哪,瑞金职业高中计算机UI学校在哪里
- Windows API GetLastError错误代码解释大全(最完整的一篇)
- SQL删除重复记录保留最大值
- CEC、ARC功能介绍
- NKOI 3124 珍珠吊坠