天天看點

JAVA邏輯運算符的“短路特性”

閱讀下列代碼,寫出 ①②③④⑤⑥⑦⑧輸出的值

public class TestLogic{
    public static void main(String[] args){
         int ia = 3;
         int ib = 2;

         boolean b3 = (++ia == 3 && ++ib == 3);// ①
         System.out.println("b3 = " + b3); //② 
         System.out.println("ia = " + ia); //③ 
         System.out.println("ib = " + ib); //④ 

         System.out.println("-------------------------------");
         //第一個條件為真後,跳過第二個條件的執行
         boolean b4 = (++ia == 5 || ++ib == 3);//
         System.out.println("b4 = " + b4); //⑥ 
         System.out.println("ia = " + ia); //⑦ 
         System.out.println("ib = " + ib); //⑧       

答案:

public class TestLogic{
    public static void main(String[] args){
         int ia = 3;
         int ib = 2;
         //在邏輯與第一個條件為假後,跳過第二個條件的執行
         boolean b3 = (++ia == 3 && ++ib == 3);// ①
         System.out.println("b3 = " + b3); //② false
         System.out.println("ia = " + ia); //③ 4
         System.out.println("ib = " + ib); //④ 2

         System.out.println("-------------------------------");
         //在邏輯或中第一個條件為真後,跳過第二個條件的執行
         boolean b4 = (++ia == 5 || ++ib == 3);//⑤
         System.out.println("b4 = " + b4); //⑥ true
         System.out.println("ia = " + ia); //⑦ 5
         System.out.println("ib = " + ib); //⑧ 2