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

你还不知道Java异或运算符的妙用?异或(XOR)运算符当两个boolean类型的变量,locked^deleted,如果locked与deleted是不同的,返回true。如果两个操作数是相同的,则返回false。因此,当我们需要同时检查两个不成立的条件时,可以使用异或运算符号。假设我们有两个条件,A和B,下面显示了A^B的可能值:A^B操作等于(A&&!B)||(!A&&B)。在Java中使用接下来让我看一下Java中的异或操作,当然我们可以.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

异或(XOR)运算符

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

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

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

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

 

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

在Java中使用

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

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

 

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

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

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

 

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

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

 

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

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

更有趣的用法

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

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

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

 

结论

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Full GC触发条件总结以及解决策略「建议收藏」

    前言FullGC相对于MinorGC来说,停止用户线程的STW(stoptheworld)时间过长,至少慢10倍以上,所以要尽量避免,首先说一下FullGC可能产生的原因,接着给出排查方法以及解决策略。FullGC产生原因下图为与产生FullGC相关的内存区域,初生代、老年代、以及Metaspace区域。System.gc()方法的调用在代码中调用System…

  • 毕业一年

    又到毕业季,一年就这么过来了,这一年独自在北京,过的单调但也充实,就做了两件事,减肥和学习。减肥在校期间不怎么运动,偶尔跑步但抵不过吃的多,永远是饭桌上吃到最后的人,肉不停的长,最胖时90kg。去年年底的时候,有一天照镜子,捏着肚子上的肉实在看不下去,下决心减肥。左图87kg到右图71kg,体脂从25降到18左右。 减肥的过程是痛苦的,但是成就感爆棚,让人更加自信,也更加相信付出会有回报。学习看

  • Redis分布式架构以及实战

    Redis分布式架构以及实战Redis一、redis6.0.6安装redis-6.0.6.tar.gztar-zxvfredis-6.0.6.tar.gz#安装gcc依赖yum-yinstallcentos-release-sclyum-yinstalldevtoolset-9-gccdevtoolset-9-gcc-c++devtoolset-9-binutilssclenabledevtoolset-9bashecho”source/opt/rh/devtoolset-9/enabl

  • c语言中的offset_c语言中/和%的区别

    c语言中的offset_c语言中/和%的区别今天看libPhenom源代码,看到他们使用的JSON解析库参考的是JanssonJSON解析库。于是就去网上查了这个库,找到了官方网站:http://www.digip.org/jansson/。找了一下发现在Github上能够下载源代码,于是下载了源代码来瞅瞅。    看了一会儿发现有一块代码一直看不明白,就比如说如下的代码:json_t*json_object(void)

  • 女生学java怎么样?女孩子学java会不会很难?

    女生学java怎么样?女孩子学java会不会很难?不少男性开发者认为“女性水平比较低,也就做做测试”,这是男性领导者经常说的一句话,虽然此话含有其个人经验和行业经验,但我们并不完全认同。女生学java怎么样?女生学java是一个很好的选择,因为女性比男性有着独特的优势,就这个行业而言: 一是女性在细心和耐力方面比男性表现得更为突出; 二是在技术管理方面女性更有优势。 现在的研发项目中很少是个人独立去做一件事情。多数是需要团队合作的。通常那些技术非常好的人,在对团队的管理及项目管理方面却是表现很一般。因为在管理中,沟通和协调是

  • navicate15 激活码(注册激活)

    (navicate15 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/ide…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号