zoukankan      html  css  js  c++  java
  • Java中逻辑&和短路&&,逻辑|和短路||的区别

    Java中逻辑&和短路&&的区别是:逻辑&需要判断&符号左边和右边的两个条件,而短路&&,如果&&符号左边的是真,才会判断右边;如果&&符号左边为假,则走else。

    eg.

    public class Demo {
        public static void main (String [] args) {
            int a = 4;
            int b = 3;
            int c = 0;
    
                    if(a<b & b/c == 0) { // 报错
                System.out.println("nihaoma"); 
            }else {
                System.out.println("wohenhao");
            }
            
                    if(a>b & b/c == 0) { // 报错
                System.out.println("nihaoma"); 
            }else {
                System.out.println("wohenhao");
            }
    
                    if(a>b && b/c == 0) { // 报错
                System.out.println("nihaoma");
            }else {
                System.out.println("wohenhao"); 
            }
    
            if(a<b && b/c == 0) {
                System.out.println("nihaoma");
            }else {
                System.out.println("wohenhao");    // 输出“wohenhao”
            }
        } 
    }            

    上述代码中,因为第一,第二段输出里面,因为是逻辑&,所以&符号左边和右边的条件都要判断,其中有一个是假,就不成立。而其中b/c,因为除数是0,,所以输出时报错。第三、第四段输出,因为是短路&&,所以只要&&号左边的为假,就会走else,&&符号左边的为真,就会判断第二个条件。所以第三段输出报错,第四段输出else中的打印结果。

    eg.

    public class Demo {
        public static void main (String [] args) {
            int a = 4;
            int b = 3;
            int c = 0;
    
                    if(a<b & b/c == 0) { // 报错
                System.out.println("nihaoma"); 
            }else {
                System.out.println("wohenhao");
            }
            
                    if(a>b | b/c == 0) { // 报错
                System.out.println("nihaoma"); 
            }else {
                System.out.println("wohenhao");
            }
    
                    if(a>b || b/c == 0) { 
                System.out.println("nihaoma"); // 输出"nihaoma"
            }else {
                System.out.println("wohenhao");   
            }
    
            if(a<b || b/c == 0) {//  报错
                System.out.println("nihaoma");
            }else {
                System.out.println("wohenhao");    
            }
        } 
    }  

    上述代码中,第一第二个输出,因为是逻辑|,所以两边都要判断,有一个报错,即报错。第三第四个输出中,因为是短路||,所以第三段中,第一个条件为真,就不会继续判断第二个条件;第四段中,因为第一个为假,需要判断把第二个,因为第二个报错,所以结果报错。

  • 相关阅读:
    linux下删除修改时间为某天之前的文件
    SPRING-MVC访问静态文件,如jpg,js,css
    [转]Kafka/Metaq设计思想学习笔记
    C++类型转换总结
    蓄水池抽样
    Cracking the coding interview--Q2.4
    Cracking the coding interview--Q2.3
    Cracking the coding interview--Q2.2
    魅蓝note2在ubuntu14.04下mtp模式无法自动mount的解决方法
    让reddit/r/programming炸锅的一个帖子,还是挺有意思的
  • 原文地址:https://www.cnblogs.com/xiaoya625/p/9271357.html
Copyright © 2011-2022 走看看