你还不知道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异或运算符的妙用?

 

结论

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ansible安装部署步骤

    目录Ansible概述1、关闭防火墙2、安装相关软件3、修改主机清单4、创建密钥对,进行远程连接5、将公钥上传到被监控端6、设置ssh免交互登录Ansible概述Ansible可以同时管理Redhat系的Linux,Debian系的Linux,以及Windows主机。管理节点只在执行脚本时与远程主机连接,没有特别的同步机制,所以断电等异常一般不会影响ansbile。ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、fun

    2022年4月6日
    62
  • 一个线程有几个threadlocal_thread线程

    一个线程有几个threadlocal_thread线程基本概念程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。进程是由程序、数据和进程控制块三部分组成的。进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己…

    2025年8月8日
    4
  • string或binary数据将被截断_字符串截断错误

    string或binary数据将被截断_字符串截断错误Hibernate:insertintodis_txtfile(delivery,postationid,sn,id)values(?,?,?,?)2012-02-2111:28:53,481[main]WARN org.hibernate.util.JDBCExceptionReporter-SQLError:0,SQLState:220012

    2022年10月7日
    5
  • unity调用animation_unity随机地图

    unity调用animation_unity随机地图Unity小科普老规矩,先介绍一下Unity的科普小知识:Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。也可以简单把Unity理解为一个游戏引擎,可以用来专业制作游戏!Unity踩坑小知识点学习Unity使用Q..

    2022年9月1日
    2
  • R6034错误解决办法_错误1962解决办法

    R6034错误解决办法_错误1962解决办法转载自:http://hi.baidu.com/%B3%E6%B5%C4%B4%AB%C8%CB/blog/item/1ee503e785263324b838206f.html提示没有找到MSVCR80D.dllR6034AnapplicationhasmadeanattempttoloadtheCruntimelibrarywithoutusinga

    2025年7月6日
    4
  • spring自定义注解实现(spring里面的注解)

    java注解:附在代码中的一些元信息,用于在编译、运行时起到说明、配置的功能。一、元注解java提供了4中元注解用于注解其他注解,所有的注解都是基于这四种注解来定义的。@Target注解:用于描述注解的使用范围,超出范围时编译失败。 取值类型(ElementType):  1.CONSTRUCTOR:用于描述构造器  2.FIELD:用于描述域(成

    2022年4月15日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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