• java &&与||短路的详解


    短路运算符就是我们常用的“&&”、“||”,一般称为“条件操作”。

    class Logic{
        public ststic void main(String[] args){
            int a=1;
            int b=1;
            if(a<b && b<a/0){
                System.out.println("Oh,That's Impossible!!!");
            }else{
                System.out.println("That's in my control.");
            }
        }
    }


        “&&”运算符检查第一个表达式是否返回“false”,如果是“false”则结果必为“false”,不再检查其他内容。
    “a/0”是个明显的错误!但短路运算“&&”先判断“a<b”,返回“false”,遂造成短路,也就不进行“a/0”操作了,程序会打出"That's in my control."。这个时候,交换一下“&&”左右两边的表达式,程序立即抛出异常“java.lang.ArithmeticException: / by zero”。

    class Logic{
        public ststic void main(String[] args){
            int a=1;
            int b=1;
            if(a==b || b<a/0){
                System.out.println("That's in my control.");
            }else{
                System.out.println("Oh,That's Impossible!!!");
            }
        }
    }


        “||”运算符检查第一个表达式是否返回“true”,如果是“true”则结果必为“true”,不再检查其他内容。
    “a/0”是个明显的错误!但短路运算“||”先执行“a==b”判断,返回“true”,遂造成短路,也就不进行“a/0”操作了,程序会打出"That's in my control."。这个时候,交换一下“||”左右两边的表达式,程序立即抛出异常“java.lang.ArithmeticException: / by zero”。


    非短路运算符包括 “& 与”、“| 或”、“^ 异或”,一般称为“逻辑操作”

    class Logic{
        public ststic void main(String[] args){
            int a=1;
            int b=1;
            if(a<b & b<a/0){
                System.out.println("Oh,That's Impossible!!!");
            }else{
                System.out.println("That's in my control.");
            }
        }
    }


        “&”运算符不会造成短路,它会认认真真的检查每一个表达式,虽然“a<b”已经返回“flase”了,它还是会继续检查其他内容,以至于最终抛出异常“java.lang.ArithmeticException: / by zero”。
        

    class Logic{
        public ststic void main(String[] args){
            int a=1;
            int b=1;
            if(a==b | b<a/0){
                System.out.println("That's in my control.");
            }else{
                System.out.println("Oh,That's Impossible!!!");
            }
        }
    }


        同理,“|”运算符也不会造成短路,虽然“a==b”已经返回“true”了,它还是会继续检查其他内容,以至于最终抛出异常“java.lang.ArithmeticException: / by zero”。

        “^”运算符道理是一样的,就不在这里罗索了。

        最后。短路运算符只能用于逻辑表达式内,非短路运算符可用于位表达式和逻辑表达式内。也可以说:短路运算只能操作布尔型的,而非短路运算不仅可以操作布尔型,而且可以操作数值型。

    转载于http://blog.sina.com.cn/s/blog_64e5287101012f9l.html

  • 相关阅读:
    H5中https://j.map.baidu.com/e7/M6hJ的地址是如何生成的
    转义符
    vue-json-excel导出数字字符串转为科学计数法问题和文件格式问题
    高级JavaScript(4)RegExp,正则表达式
    js7种数据类型
    gulp自动化打包及静态文件自动添加版本号
    解决——CSS :before、:after ,当content使用中文时有时候会出现乱码
    【移动端】移动端点击可点击元素时,出现蓝色默认背景色
    我去!爬虫遇到字体反爬,哭了
    实战|教你用Python玩转Mysql
  • 原文地址:https://www.cnblogs.com/wgbs25673578/p/4845892.html
Copyright © 2020-2023  润新知