1、Java中&叫做按位与,&&叫做短路与,它们的区别是:

& 既是位运算符又是逻辑运算符,&的两侧可以是int,也可以是boolean表达式,当&两侧是int时,要先把运算符两侧的数转化为二进制数再进行运算,而短路与(&&)的两侧要求必须是布尔表达式。举例如下:

12&5 的值是多少?答:12转成二进制数是1100(前四位省略了),5转成二进制数是0101,则运算后的结果为0100即4 这是两侧为数值时;

若 int i = 2,j = 4;则(++i=2)&(j++=4)的结果为false,其过程是这样的:先判断++i=2是否成立,这里当然是不成立了(3 == 2),但是程序还会继续判断下一个表达式是否成立,j++=4 ,该表达式是成立的,但是&运算符要求运算符两侧的值都为真,结果才为真,所以(++i=2)&(j++=4)的结果为

false 注意 :&为真的条件是两侧表达式都为真,但是即使我们判断出左侧表达式的值为false,程序也还是要继续执行去判断右侧的表达式值的真假

若 int i = 2,j = 4;则(++i=2)&&(j++=4)的结果为false,其过程基本上和上面的是相同的,但是若左侧表达式的值为false时,程序则不会继续判断右侧表达式的真假了,短路与中,短路这个词大概也就是这个意思吧

2、Java中‘|’与‘||’的区别

int

i=0;

if(3>2 || (i++)>1) i=i+1;

System.out.println(i);

这段程序会打印出1,而不是打印出2。

因为在if的条件判断中,程序先判断第一个表达式3>2是否成立,结果3>2为真,那么按照逻辑来说,无论后面一个表达式(i++)>1是否成立,整个或表达式肯定为真,因此程序就不去执行判断后面一个表达式即(i++)>1了,所以这里i并没有自增1。然后程序执行到i=i+1,于是i变为1。最后打印出1。

int i=0;

if(3>2 | (i++)>1) i=i+1;

System.out.println(i);

如果换做这样写,那么就是打印出2了,因为无论第一个条件3>2是否为真,程序都会去执行判断第二个条件表达式,因此i++这个自增是会被执行的,再加上if内的i=i+1,所以最终i=2。

有些人习惯把||叫做短路或,把&&叫做短路与。&&和&的区别和||与|的区别类似,对于&&来说,如果前面的条件表达式已经为假了,整个条件表达式肯定为假,就不会去执行判断后面的条件表达式。

喜欢这篇文章?欢迎打赏~~

java中 amp_Java中amp;、|、amp;amp;、||详解相关推荐

  1. java throw与throws_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  2. java break 在if 中使用_java中使用国密SM4算法详解

    前言 上次总结了一下加密算法的分类(加密算法有集中形式,各有什么不同?),现在我们用java语言实现一下SM4:无线局域网标准的分组数据算法.对称加密,密钥长度和分组长度均为128位. ps:我们既可 ...

  3. java的case_java中的switch case语句使用详解

    java中的switch case语句 switch-case语句格式如下: switch(变量){ case 变量值1: //; break; case 变量值2: //...; break; .. ...

  4. java里的进制转换函数_基于Java中进制的转换函数详解

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

  5. throws java_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  6. java线程和内核线程的,Java中内核线程理论及实例详解

    1.概念 内核线程是直接由操作系统内核控制的,内核通过调度器来完成内核线程的调度并负责将其映射到处理器上执行.内核态下的线程执行速度理论上是最高的,但是用户不会直接操作内核线程,而是通过内核线程的接口 ...

  7. java excel中重复数据 事务处理_Java导出excel时合并同一列中相同内容的行思路详解...

    一.有时候导出Excel时需要按类别导出,一大类下好几个小类,小类下又有好几个小小类,就像下图: 要实现这个也不难, 思路如下:按照大类来循环,如上就是按照张江校区.徐汇校区.临港校区三个大类循环,然 ...

  8. Java 11中的新功能和API详解系列1

    Java 11中的新功能和API详解系列1 2018.9.27 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. JDK 11在语言语法方面有一个小改动,增加了相当数量的新API,以及 ...

  9. java中List的用法和实例详解

    Java中List的用法和实例详解 List的用法 List包括List接口以及List接口的所有实现类.因为List接口实现了Collection接口,所以List接口拥有Collection接口提 ...

  10. java迭代器删除元素_java迭代器中删除元素的实例操作详解

    java迭代器中删除元素的实例操作详解 2021-01-21 16:40:08 我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删 ...

最新文章

  1. Spring Boot + Vue + Shiro 实现前后端分离、权限控制
  2. Hadoop从0开始 (安装配置:转) (一) - 沐魇
  3. MySQL——高阶语句、存储过程(下)
  4. win10下JDK环境变量配置与IDEA开发工具清晰简洁步骤,迈出Java学习第一步
  5. vray阴天室内_阴天有话:第1部分
  6. HQL 如何 count(*) 分页查询出来 group by 的总数?
  7. 庖丁解牛:控件事件和数据回发概述
  8. 自动将中国ip地址归属地分类并保存到数据库中
  9. 笔记本锁定计算机功能键,如何锁上笔记本键盘_怎样锁定笔记本键盘
  10. 面试技巧——程序员简历模板
  11. 医院信息化建设重点工作
  12. usb启动计算机boss设置方法,技嘉主板bios设置usb启动(图文教程)
  13. Ubuntu 软件安装方法(入门必看)
  14. 计算机网络原理 实验3《IP数据包捕获及数据分析》
  15. 论文|完整空间多任务模型(Entire Space Multi-Task Model)
  16. win10资源管理器频繁重启可能原因及解决方案
  17. idea 提示Expecting newline or semicolon解决办法
  18. 如何启用计算机上的摄像头,电脑如何打开摄像头
  19. 如何ping通github
  20. 写论文时,画黑白电路图的技巧

热门文章

  1. 实现企业数字化转型,你只差一味药引子
  2. 基于android开发的日历,基于android开发的日历APP设计.doc
  3. 缅怀AI之父图灵,谈论人工智能电话的过去和现在
  4. 老司机教你一秒分辨ESD静电保护器件正负方向
  5. 物联网却不能物物相联?阿里云物联网平台得这么设置!
  6. 如何管理一个测试团队
  7. 2022-2028全球湿磨机市场现状及未来发展趋势
  8. vr工业操作培训模拟系统可以应用到哪些场景中
  9. SceneKit播放视频
  10. 常用开发、办公工具推荐