Perbedaan &&, ||, & dan | pada pemrograman Java

&& (Logical AND)

Operator yang satu ini digunakan untuk perbandingan kondisi AND. Akan menghasilkan true jika kedua kondisi true. Operator di jalankan dari kiri ke kanan. Selain itu yang perlu diperhatikan adalah bahwa && merupakan short-circuit operator. Short circuit operator  disini maksudnya adalah jika kondisi yang kiri bernilai false, maka operasi yang kanan tidak akan di jalankan, karena sudah pasti hasilnya akan false. Berikut ini contohnya:
//and1 bernilai true
boolean and1 = true && true;
// and2 bernilai false
boolean and2 = true && false;
//and3 bernilai false, operator yang kanan tidak dievaluasi
boolean and3 = false && true;
//and4 bernilai false,operator yang kanan tidak dievaluasi
boolean and4 = false && false;

|| (Logical OR)

Operator || digunakan untuk perbandingan kondisi OR. Akan menghasilkan true jika salah satunya bernilai true. Operator ini dijalankan dari kiri ke kanan dan juga termasuk short-circuit operator. Short-circuit operator disini maksudnya adalah jika kondisi yang kiri bernilai true, makan operasi yang kanan tidak dijalankan, sebab sudah pasti hasilnya true. Contohnya:
// or1 true, operator kanan tidak dievaluasi
boolean or1 = true || true;
// or2 true, operator kanan tidak dievaluasi
boolean or2 = true || false;
// or3 true
boolean or3 = false || true;
// or4 false
boolean or4 = false || false;

& (AND dan BIT AND Operation)

Operator & bisa berfungsi sebagai conditional operator atau bisa juga berfungsi sebagai operator bit pada bilangan. Jika berfungsi sebagai conditional operator, maka tidak berlaku fungsi short-circuit, akibatnya operator kiri dan kanan pasti akan di evaluasi apapun kondisinya. Contoh sebagai conditional operator sebagai berikut:
//and1 bernilai true
boolean and1 = true & true;
//and2 bernilai false
boolean bitand2 = true & false;
//and3 bernilai false, operator yang kanan dievaluasi
boolean and3 = false & true;
//and4 bernilai false,operator yang kanan dievaluasi
boolean and4 = false & false;
Sedangkan contoh penggunaan sebagai bitwise operator adalah sebagai berikut:
    0101 (decimal 5)
AND 0011 (decimal 3)
  = 0001 (decimal 1)
Maka code javanya adalah sebagai berikut:
//a akan bernilai 1
int a = 5 & 3;

| (OR dan BIT OR Operation)

Nah, yang terakhir ini adalah operator | yang berfungsi sebagai conditional operator atau bisa juga berfungsi sebagai bit pada bilangan. Jika berfungsi sebagai conditional operator, maka tidak berlaku fungsi short-circuit, akibatnya operator kiri dan kanan pasti akan di evaluasi apapun kondisinya. Contoh sebagai conditional operator sebagai berikut:
// or1 true, operator kanan dievaluasi
boolean or1 = true | true;
// or2 true, operator kanan dievaluasi
boolean or2 = true | false;
// or3 true
boolean or3 = false | true;
// or4 false
boolean or4 = false | false;
Sedangkan contoh penggunaan sebagai bitwise operator adalah sebagai berikut:
   0101 (decimal 5)
OR 0011 (decimal 3)
 = 0111 (decimal 7)
Maka code javanya adalah sebagai berikut:
//a akan bernilai 7
int a = 5 | 3;

Kesimpulan:

Nah, untuk lebih memperdalam pendalaman tentang operator2 diatas, bisa coba mengeksekusi source code dibawah ini:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class ArithmeticResultsOutput {
 public static void main (String[] args) {
   int i1 = 100; int j1 = 200;
   if ((i1 == 99) & (--j1 == 199)) {
     System.out.print("Value1: " + (i1 + j1) + " ");
   } else {
     System.out.print("Value2: " + (i1 + j1) + " ");
   }
   int i2 = 100; int j2 = 200;
   if ((i2 == 99) && (--j2 == 199)) {
     System.out.print("Value1: " + (i2 + j2) + " ");
   } else {
     System.out.print("Value2: " + (i2 + j2) + " ");
   }
   int i3 = 100; int j3 = 200;
   if ((i3 == 100) | (--j3 == 200)) {
     System.out.print("Value1: " + (i3 + j3) + " ");
   } else {
     System.out.print("Value2: " + (i3 + j3) + " ");
   }
   int i4 = 100; int j4 = 200;
   if ((i4 == 100) || (--j4 == 200)) {
     System.out.print("Value1: " + (i4 + j4) + " ");
   } else {
     System.out.print("Value2: " + (i4 + j4) + " ");
   }
 }
}
Bagaimana..? Sudah terlihat jelas perbedaannya khan..?


Referensi:
[1] Liguori, Robert., Finegan, Edward. (2010). SCJA Sun® Certified Java™ Associate Study Guide. New   York: Mc Graw Hill
[2] https://ifhayz.wordpress.com/2011/12/31/perbedaan-operator-logika-pada-pemrograman-java/
Share on Google Plus

About Unknown

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.

0 comments :

Post a Comment