zoukankan      html  css  js  c++  java
  • java day03

     神奇的短路运算

    下面是一段java代码

    与运算

    int i=6;
    int j=6;
    boolean c=((i=i+5)>10&&i>10);
    boolean d=(j>10&&(j=j+5)>10);
    System.out.println(c);
    System.out.println(d);
    

      

      返回值

    true
    false

    为什么会出现这样的情况呢?

    看似代码相似 都是判断i(j)+5是否大于10 还有i(j)本身是否大于10

    在java中对短路运算做过优化如果左边的值为false则不进行右边的计算

    因为 0&&1 必定返回 false  所以编译器自动省略了后续的计算

    还有就是在短路运算中运算方式是从左到右,这个一定要注意。

    或运算

    int i=5;
    int j=5;
    
    boolean b=(i=i+5)>10||i>6;
    boolean a=j>6||(j=j+5)>10;
    

      返回值

    true
    true

    思路和与运算类似 一真一假 则为真  两个假则为假   两个真则为真

    另外 值得一说的是&运算符与&&运算符的区别

    &运算符执行的非短路运算 也就是两边的值都会进行计算,但现在基本不使用,只作为了解。

  • 相关阅读:
    使用Netcat实现通信和反弹Shell
    PentesterLab----xss
    nmap实验
    xssgame20关
    使内网服务器访问外网
    lcx端口转发
    提权
    Nmap使用及常见的参数选项
    kali渗透metasploitable靶机
    我待Django如初恋(✪ω✪)的第一天💗
  • 原文地址:https://www.cnblogs.com/a986771570/p/7008271.html
Copyright © 2011-2022 走看看