Java中&和&&,|和||的区别(超详细讲解),细节请必会!

Java中&和&&,|和||的区别(超详细讲解),细节请必会!一、&是与,&&是短路与&&是左边条件不满足就终止了,不会继续计算右边条件;而&是无论左边是否满足都会继续执行右边。比如a&&b,假如计算a是假,那么就不会继续计算b的真假值了;假如a是真,那么会继续计算b,当b也是真时,a&&b为真。而a&b,无论a是真假,都会继续计算…

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

一、& 是与,&&是短路与

  • && 是左边条件不满足就终止了,不会继续计算右边条件;而&是无论左边是否满足都会继续执行右边。
  • 比如 a && b , 假如计算 a 是假 , 那么就不会继续计算b的真假值了;假如a是真,那么会继续计算b,当b也是真时,a&&b为真。
  • 而 a & b , 无论a是真假,都会继续计算b的真假值。

二、| 是或,|| 是短路或

  • 原理内跟上面差不多,a || b 只要 a为真时,那么整个表达式就是真了,不会继续计算b的真假值。
  • 而 a | b , 无论a真假,都会继续计算b的值。

三、举例说明其区别

判断语句中为布尔类型,值只有 true 和 false(如果变量值为 0 就是 false,否则为 true)

举个例子,a=1 b=2
所以 a>0 这个值为true b>1 这个值为true b>2 这个值为 false
如 if(a>0&b>1) 我们可以得出 if(true&true),条件成立(true不为0,所以true&true不为0)
如 if(a>0&&b>1) 我们可以得出 if(true&&true),条件成立(&&两边操作数都非零,所以条件成立)
如 if(b>2&a>0) 我们可以得出 if(false&true),条件不成立(false为0,false&true为0,条件不成立)
如 if(b>2&&a>0) 我们可以得出 if(false&&a>0),条件不成立(&&左侧为false,&&运算到此结束,条件不成立)

可以看出 & 和 && 在判断语句中都可以实现“和”这个功能,不过区别在于 & 两边都运算,而 && 先算 && 左侧,若左侧为 false 那么右侧就不运算了。因此从效率上来说,判断语句中推荐使用 &&(换句话就是逻辑运算就老老实实用逻辑运算符,不然它为啥叫逻辑运算符呢?)
而 | 和 || 的比较与上类似,不做赘述。

总结:一般用 && 和 || 的较多

四、另外, & 和 | 还用于位运算中

  • & 按位与操作,按二进制位进行”与”运算。运算规则:(有 0 则为 0)
0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;
  • | 按位或运算符,按二进制位进行”或”运算。运算规则:(有 1 则为 1)
0|0=0;   
0|1=1;   
1|0=1;    
1|1=1;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

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

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

(0)


相关推荐

  • 『Python』hashlib的简单使用

    『Python』hashlib的简单使用hashlib的简单使用实用

  • Servlet工作原理解析(二)「建议收藏」

    Servlet工作原理解析(二)「建议收藏」上一篇文章简单介绍了Servlet容器的启动、初始化的过程,(链接在这里Servlet工作原理解析(一)),接下来介绍Servlet的创建以及实例化。一:创建Servlet对象 如果Servlet的load-on-startup配置项大于0,那么在Context容器启动时就会被实例化。 前面提到的在解析配置文件时会读取默认的globalWebXml,在conf下的web

  • SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数)

    SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数)关于NettyNetty是一个利用Java的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的API的客户端/服务器框架。MAVEN依赖 <dependencies> <!–https://mvnrepository.com/artifact/io.netty/netty-all–> <dependency> <g…

  • js遍历对象属性的一些方法有哪些_js面试遍历对象的所有属性

    js遍历对象属性的一些方法有哪些_js面试遍历对象的所有属性1.Reflect.ownKeys()静态方法Reflect.ownKeys()返回一个由目标对象自身的属性键组成的数组。2.Object.entries(obj)Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用for…in循环遍历该对象时返回的顺序一致(区别在于for-in循环还会枚举原型链中的属性)。3.Object.fromEntr…

    2022年10月20日
  • Chromedriver(谷歌浏览器驱动)安装教程「建议收藏」

    Chromedriver(谷歌浏览器驱动)安装教程「建议收藏」Python爬虫、数据分析、网站开发等案例教程视频免费在线观看https://space.bilibili.com/523606542Python学习交流群:1039649593最近很多朋友都在私信中问到我,下面这个报错应该怎么解决selenium.common.exceptions.WebDriverException:Message:’chromedriver’executableneedstobeinPATH.Pleaseseehttps://si

  • 个人号微信api接口开发_API接口授权系统php源码

    个人号微信api接口开发_API接口授权系统php源码最近公司需求开发一套自定义的微信机器人,需求是可以自动聊天,自动回复,发朋友圈,转发语音,以及自动添加好友等,还可以取聊天内容保存自己数据库里,what????这怎么可能实现,一口回绝,当产品经理拿着现成的市场产品打在脸上的时候,才发现微信真的可以实现!!调研开发了3个月,3个月啊!!!(主要被各种技术走偏路),终于得到以下知识,都是走过的心酸泪,大家开发完成,记得给我点个赞!!!大家一般需求点无非是以下几个需求:1.开发个人微信营销系统2.开发自定义的微信机器人,3.开发微信智能聊天客服系统

发表回复

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

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