Monday, December 19, 2011

Perbedaan antara Boolean Operator dengan Short-Circuit Boolean Operators

Misalnya penggunaan & dengan &&.
--> contoh coding:

if(mereturnFalse() & mereturnTrue()) {
            System.out.println("BENAR");
        } else {
            System.out.println("SALAH");
        }
    }

    private static boolean mereturnTrue() {
        System.out.println("mereturn true");
        return true;
    }

    private static boolean mereturnFalse() {
        System.out.println("mereturn false");
        return false;
        }

output &:












output &&:












Penjelasan:
Operator & atau && akan bernilai benar bila kedua nilainya benar.
----------
& | 0 | 1 |
----------
0  | 0 | 0 |
----------
1  | 0 | 1 |
----------

Kenapa hasilnya berbeda antara penggunaan & dengan &&?
Pada saat menggunakan op &, Java akan membaca semua perintah. Pertama Java membaca mereturnFalse() dimana bernilai false. kemudian mencetak "mereturn false". Selanjutnya membaca mereturnTrue() dimana bernilai true. kemudian mencetak "mereturn true". nilai pertama adalah false dan nilai kedua adalah true jadi hasilnya adalah false kemudian mencetak "SALAH".

Sedangkan apabila menggunakan op &&, pada saat Java membaca mereturnFalse dan nilai yang di dapat adalah false, Java tidak akan membaca nilai kedua. Karena pada prinsipnya apabila ada satu saja nilai yang false maka hasilnya adalah false. Lain halnya jika kondisi pertama adalah bernilai true, maka Java harus membaca kondisi kedua, karena dapat kemungkinan hasilnya adalah true atau false tergantung dari nilai kedua tersebut.

ilustrasi:
&
if ( false & true)
nilai pertama dan kedua di baca

&&
if(false &&  )
nilai kedua tidak dibaca karena nilai pertama sudah bernilai false.

No comments:

^_^

SEMOGA BERMANFAAT