[Java] Short Circuited - So sánh mạch ngắn

Thảo luận trong 'Java/Java Script' bắt đầu bởi integer, 4 Tháng tám 2012.

  1. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Khi dùng toán tử &&, || bạn có để ý điều kiện ở vế trái và phải không. Thứ tự của biểu thức ở hai vế ảnh hưởng nhiều đến tốc độ chương trình. Khái niệm này gọi là Short circuited hay còn gọi là so sánh mạch ngắn. Khi xét vế trái nếu đạt điều kiện thì không cần xét vế phải nữa mà trả về kết quả luôn. Đối với phép || thì chỉ cần 1 vế đúng sẽ trả về ngay, đối với phép && chỉ cần 1 vế sai sẽ trả về kết quả ngay.
    Như vậy, ta cần sắp xếp biểu thức có khả năng trả về kết quả đúng nhất vào bên trái. Xem code sau:
    PHP:
    public class ShortCircuited {
        public 
    void action() {
            
    int a 5;
            
    int b 0;
            
    // || Operator
            
    if (run(b) || run(a))
                
    System.out.println("|| Operator run");
     
            
    // && Operator
            
    if (run(a) && run(b))
                
    System.out.println("&& Operator run");
        }
     
        
    boolean run(int num) {
            
    System.out.println("Function excuted");
            return 
    num == 0;
        }
    }
    Trường hợp phép ||: Chỉ cần 1 vế trả về đúng thì không cần xét vế còn lại. Ở đây đưa số b =0 vào, hàm run trả về true.
    Trường hợp phép &&: Chỉ cần 1 vế sai sẽ không xét vế còn lại nữa. Ở đây đưa số a =5, hàm run trả về false.
    Các bạn run code để hiểu thêm, có gì hỏi đáp tại đây.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí