前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你还不知道Java异或运算符的妙用?

你还不知道Java异或运算符的妙用?

作者头像
全栈程序员站长
发布2022-09-27 12:55:13
7290
发布2022-09-27 12:55:13
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

异或(XOR)运算符

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

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

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

你还不知道Java异或运算符的妙用?
你还不知道Java异或运算符的妙用?

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

在Java中使用

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

你还不知道Java异或运算符的妙用?
你还不知道Java异或运算符的妙用?

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

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

你还不知道Java异或运算符的妙用?
你还不知道Java异或运算符的妙用?

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

你还不知道Java异或运算符的妙用?
你还不知道Java异或运算符的妙用?

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

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

更有趣的用法

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

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

你还不知道Java异或运算符的妙用?
你还不知道Java异或运算符的妙用?

结论

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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/188519.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 异或(XOR)运算符
  • 在Java中使用
  • 更有趣的用法
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档