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

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

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


相关推荐

  • python pyc文件使用_python怎么打开pyc文件

    python pyc文件使用_python怎么打开pyc文件首先使用百度搜索“ultraEdit”,进入到如图所示的官网下载文件。进入到ultraEdit官网的下载界面,我们选择如图所示的试用版本下载,我们进入到具体的下载界面后,点击下载中文安装版。下载好,我们使用鼠标左键双击软件安装包,进入到安装界面后点击安装,使用默认安装就可以了,无需修改安装文件路径。安装好了后,我们在电脑桌面使用鼠标左键双击ultraEdit的快捷方式,打开后进入到ultraEdi…

    2022年6月24日
    34
  • listView1_ItemSelectionChanged事件

    listView1_ItemSelectionChanged事件ItemSelectionChanged事件会触发2次,其中第1次触发,是listview控件先做取消所有选择,第2次才是选择用户选定的项。所以要加上if(e.IsSelected)来判断是否是用户选择改变时触发。…

    2022年7月26日
    3
  • 安卓天天练练(五)CompoundButton

    安卓天天练练(五)CompoundButtonToggleButton让我想起了从前jQuery还没有取消toggle方法时是怎么偷懒的。。注意:如果LinearLayout,与RelativeLayout不同,必须有orientation。用可视化顶部的横着隔开或者竖着隔开的方形按钮也可以选择,例如android:orientation=”vertical”三目运算符前面和js一样,那个state是不需要额外带括号的按…

    2022年5月25日
    33
  • 利用python进行数据分析豆瓣_如何用python做数据分析

    利用python进行数据分析豆瓣_如何用python做数据分析一、处理数据的基本内容数据分析是指对数据进行控制、处理、整理、分析的过程。在这里,“数据”是指结构化的数据,例如:记录、多维数组、Excel里的数据、关系型数据库中的数据、数据表等。二、说说

    2022年8月4日
    4
  • 2017过去了,2018来了「建议收藏」

    2017那些过往的岁月,留给自己!

    2022年2月26日
    35
  • Dockerfile add_dockerfile copy和add区别

    Dockerfile add_dockerfile copy和add区别前言Dockerfile中提供了两个非常相似的命令COPY和ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景。Build上下文的概念在使用dock

    2022年7月30日
    7

发表回复

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

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