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");    
        }
    } 
}  

上述代碼中,第一第二個輸出,因為是邏輯|,所以兩邊都要判斷,有一個報錯,即報錯。第三第四個輸出中,因為是短路||,所以第三段中,第一個條件為真,就不會繼續判斷第二個條件;第四段中,因為第一個為假,需要判斷把第二個,因為第二個報錯,所以結果報錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM