Syarat pada dunia nyata jarang berdiri sendiri. Sebuah siswa lulus bila nilai ujian minimal 75 dan kehadiran minimal 80 persen; kasir menerima transaksi bila stok tersedia atau barang masih bisa dipesan. Operator logika pada Java — && (logical AND), || (logical OR), dan ! (logical NOT) — berfungsi menggabungkan nilai boolean dari beberapa perbandingan menjadi satu kesimpulan akhir. Chapter ini membahas tabel kebenaran ketiga operator tersebut, cara merangkai kondisi majemuk, serta hubungannya dengan operator & dan | yang terlihat mirip tetapi berperilaku berbeda.
Tiga Operator Logika #
Operator && menghasilkan true hanya bila kedua operand bernilai true. Operator || menghasilkan true bila salah satu operand (atau keduanya) bernilai true. Operator ! adalah operator unary yang membalik nilai — !true menjadi false dan sebaliknya. Alat baku untuk memahami perilaku ketiganya adalah tabel kebenaran berikut.
public class TabelKebenaran {
public static void main(String[] args) {
System.out.println("p q p && q p || q !p");
System.out.println("--------------------------------");
boolean[] nilai = {false, true};
for (boolean p : nilai) {
for (boolean q : nilai) {
System.out.printf("%-7b%-7b%-8b%-8b%-7b%n", p, q, p && q, p || q, !p);
}
}
}
}Output yang Dihasilkan:
p q p && q p || q !p
--------------------------------
false false false false true
false true false true true
true false false true false
true true true true false Mari kita telaah baris-baris kode di atas:
- Baris 6 (
boolean[] nilai = {false, true};): array dua elemen yang menjadi sumber seluruh kombinasi operand. - Baris 7-8 (
forbersarang): loop luar memilih nilaip, loop dalam memilih nilaiq— menghasilkan empat kombinasi lengkap:false false,false true,true false,true true. - Baris 9 (
System.out.printf(...)): mengevaluasip && q,p || q, dan!puntuk setiap kombinasi, lalu mencetak kelima kolom dengan format%-7bagar boolean rata kiri dalam kolom tetap.
Perhatikan baris ketiga dan keempat pada output: ketika p bernilai false, hasil p && q pasti false apa pun nilai q — inilah pintu masuk perilaku short-circuit yang kita bahas tuntas pada Chapter khusus di akhir Section ini.
Menggabungkan Beberapa Kondisi #
Dalam praktik, operator logika dipakai untuk merangkai hasil operator perbandingan dari Chapter sebelumnya. Pola yang paling sering muncul: simpan setiap syarat sebagai variabel boolean yang bernama deskriptif, lalu gabungkan dengan && atau ||. Pembacaan kode menjadi jauh lebih mirip kalimat syarat yang sesungguhnya, dan operator ! tinggal membalik kesimpulan yang sudah ada.
public class LogikaKondisi {
public static void main(String[] args) {
int nilaiUjian = 78;
int kehadiran = 90;
boolean lulusNilai = nilaiUjian >= 75;
boolean lulusHadir = kehadiran >= 80;
boolean lulus = lulusNilai && lulusHadir;
boolean perluRemedial = !lulusNilai || !lulusHadir;
System.out.println("Lulus nilai : " + lulusNilai);
System.out.println("Lulus hadir : " + lulusHadir);
System.out.println("Lulus akhir : " + lulus);
System.out.println("Perlu remedial : " + perluRemedial);
}
}Output yang Dihasilkan:
Lulus nilai : true
Lulus hadir : true
Lulus akhir : true
Perlu remedial : falseBaris 6-7 mengevaluasi dua perbandingan menjadi boolean. Baris 9 menggabungkan keduanya dengan &&: karena lulusNilai dan lulusHadir sama-sama true, variabel lulus bernilai true. Baris 10 memakai ! pada masing-masing variabel lalu || — siswa perlu remedial bila salah satu syarat tidak terpenuhi.
Operator & dan | pada Boolean #
Java masih menyediakan operator & dan | yang juga bekerja pada boolean. Perbedaannya: & dan | selalu mengevaluasi kedua operand, sedangkan && dan || berhenti lebih awal begitu kesimpulan sudah pasti. Karena itu & dan | disebut operator non-short-circuit — berguna hanya bila kedua operand memang harus dievaluasi penuh, misalnya ketika keduanya memanggil method dengan efek samping yang wajib berjalan.
Untuk kondisi biasa, gunakan && dan ||: evaluasinya lebih hemat dan, lebih penting lagi, memungkinkan pola pemeriksaan berlapis seperti s != null && s.length() > 0 yang aman terhadap null. Java juga memiliki operator ^ (XOR) pada boolean yang bernilai true bila kedua operand berbeda — jarang dipakai, tetapi berguna untuk logika eksklusif.
Nilai boolean hasil operator logika siap dipakai sebagai kondisi pada statement if dan loop. Namun &, |, dan ^ punya kehidupan kedua yang lebih tua: ketiganya bekerja pada tingkat bit bilangan. Chapter berikutnya mengupas bitwise operators tersebut beserta trik membaca hasilnya dalam bentuk biner.
Referensi #
- Java Language Specification — Bab 15 Expressions
- Oracle Dev.java — Learn Java
- Oracle Java SE 25 Documentation
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
LogikaKondisi.java
Unduh berkaspublic class LogikaKondisi {
public static void main(String[] args) {
int nilaiUjian = 78;
int kehadiran = 90;
boolean lulusNilai = nilaiUjian >= 75;
boolean lulusHadir = kehadiran >= 80;
boolean lulus = lulusNilai && lulusHadir;
boolean perluRemedial = !lulusNilai || !lulusHadir;
System.out.println("Lulus nilai : " + lulusNilai);
System.out.println("Lulus hadir : " + lulusHadir);
System.out.println("Lulus akhir : " + lulus);
System.out.println("Perlu remedial : " + perluRemedial);
}
}
TabelKebenaran.java
Unduh berkaspublic class TabelKebenaran {
public static void main(String[] args) {
System.out.println("p q p && q p || q !p");
System.out.println("--------------------------------");
boolean[] nilai = {false, true};
for (boolean p : nilai) {
for (boolean q : nilai) {
System.out.printf("%-7b%-7b%-8b%-8b%-7b%n", p, q, p && q, p || q, !p);
}
}
}
}