Operator
Dalam Java, ada beberapa tipe operator. Ada operator aritmatika,
operator relasi, operator logika, dan operator kondisi. Operator ini mengikuti
bermacam-macam prioritas yang pasti sehingga compilernya akan tahu yang mana
operator untuk dijalankan lebih dulu dalam kasus beberapa operator yang dipakai
bersama-sama dalam satu pernyataan.
4.10.1
Operator Aritmatika
Berikut ini
adalah dasar operator aritmatika yang dapat digunakan untuk membuat suatu program
Java,
Operator Penggunaan
+ op1 + op2
* op1 * op2
/ op1 / op2
% op1 % op2
- op1 - op2
Keterangan
Menambahkan op1
dengan op2
Mengalikan op1
dengan op2
Membagi op1 dengan
op2
Menghitung sisa dari
pembagian op1 dengan op2
Mengurangkan
op2 dari op1
Tabel 3: Operator
Aritmatika dan fungsi-fungsinya
Berikut ini
adalah contoh program dalam penggunaan operator-operator ini :
public class aritmatikaDemo
{
public static void main(String[] args)
{
{
//sedikit angka
int i = 37;
int i = 37;
int j = 42;
double x = 27.475;
double y = 7.22;
double y = 7.22;
System.out.println("Variable values...");
System.out.println(" i = " + i);
System.out.println(" j = " + j);
System.out.println(" x = " + x);
System.out.println(" y = " + y); //penjumlahan angka
System.out.println("Adding...");
System.out.println(" i + j = " + (i + j));
System.out.println(" x + y = " + (x + y));
//pengurangan angka
System.out.println("Subtracting...");
System.out.println(" i - j = " + (i - j));
System.out.println(" x - y = " + (x - y));
//perkalian angka
System.out.println("Multiplying...");
System.out.println(" i * j = " + (i * j));
System.out.println(" x * y = " + (x * y));
//pembagian angka
System.out.println("Dividing...");
System.out.println(" i / j = " + (i / j));
System.out.println(" x / y = " + (x / y));
//menghitung hasil modulus
dari pembagian
System.out.println("Computing the
remainder...");
System.out.println(" i % j = " + (i % j));
System.out.println(" x % y = " + (x % y));
//tipe penggabungan
System.out.println("Mixing
tipes...");
System.out.println("
System.out.println("
}
}
Berikut ini
adalah output program,
Variable values...
i = 37
j = 42
j + y = " + (j + y));
i * x = " + (i * x));
i * x = " + (i * x));
x = 27.475
y = 7.22
i + j = 79
Adding...
y = 7.22
i + j = 79
Adding...
x + y = 34.695
Subtracting...
i - j = -5
Subtracting...
i - j = -5
x - y = 20.255
Multiplying...
i * j = 1554
x * y = 198.37
Dividing...
i / j = 0
Multiplying...
i * j = 1554
x * y = 198.37
Dividing...
i / j = 0
x / y = 3.8054
Computing the remainder...
i % j = 37
i % j = 37
x % y = 5.815
Mixing tipes...
j + y = 49.22
i * x = 1016.58
Mixing tipes...
j + y = 49.22
i * x = 1016.58
Catatan: Ketika integer
dan floating-point number
digunakan sebagai operand
untuk operasi aritmatika tunggal, hasilnya
berupa floating point. Integer adalah converter secara implisit ke bentuk angka floating-point sebelum operasi berperan
mengambil tempat.
4.10.2.
Operator Increment dan Decrement
Dari sisi operator dasar aritmatika, Java juga terdiri atas operator unary increment (++) dan operator unary decrement (--). operator
increment dan decrement menambah dan mengurangi nilai yang tersimpan dalam bentuk variabel
angka terhadap nilai 1.
Sebagai contoh,
pernyataan,
count = count + 1;
pernyataan
tersebut sama dengan,
count++;
Operator Penggunaan
++ op++
++ ++op
-- op--
-- --op
//increment nilai count dengan nilai 1
Keterangan
Menambahkan nilai 1 pada op;
mengevaluasi nilai op sebelum
diincrementasi/ditambahkan
Menambahkan nilai 1 pada op;
mengevaluasi nilai op setelah
diincrementasi/ditambahkan
Mengurangkan nilai 1 pada op;
mengevaluasi nilai op sebelum
didecrementasi/dikurangkan
Mengurangkan nilai 1 pada op;
mengevaluasi nilai op setelah
didecrementasi/dikurangkan
Tabel 4: operator Increment dan Decrement
Operator
increment dan decrement dapat ditempatkan sebelum atau sesudah operand.
Ketika digunakan sebelum
operand, akan menyebabkan
variabel diincrement atau didecrement dengan nilai 1, dan kemudian nilai baru
digunakan dalam pernyataan dimana dia
ditambahkan. Sebagai contoh,
int i = 10,
int j = 3;
int k = 0;
int k = 0;
k = ++j + i;
//akan menghasilkan k = 4+10 = 14
Ketika operator increment dan decrement ditempatkan setelah operand,
nilai variabel yang lama akan digunakan lebih dulu dioperasikan lebih dulu
terhadap pernyataan dimana dia ditambahkan.
Sebagai contoh,
int i = 10,
int j = 3;
int k = 0;
int j = 3;
int k = 0;
k = j++ + i; //akan menghasilkan k = 3+10 = 13
Petunjuk
Penulisan Program:
Selalu
membuat pernyataan yang mengandung operator increment dan decrement untuk tetap dipahami secara mudah dan sederhana.
4.10.3
Operator Relasi
Operator
Relasi membandingkan dua nilai dan menentukan keterhubungan diantara nilainilai tersebut. Hasil keluarannya berupa nilai boolean yaitu true atau
false.
Operator Penggunaan Keterangan
> op1 > op2 op1 lebih besar dari op2
>= op1 >= op2 op1 lebih besar dari atau sama dengan
op2
< op1 < op2 op1 kurang dari op2
<= op1 <= op2 op1 kurang dari atau sama dengan op2
== op1 == op2 op1 sama dengan op2
!= op1 != op2 op1 tidak sama dengan op2
Table 5: Operator Relasi
public class RelasiDemo
{
public static void
main(String[] args) { //beberapa nilai
int i = 37;
int j = 42;
int k = 42;
int k = 42;
System.out.println("Nilai variabel...");
System.out.println(" i = " + i);
System.out.println(" j = " + j);
System.out.println(" k = " + k);
//lebih besar dari
System.out.println("Lebih besar
dari...");
System.out.println(" i > j = " + (i > j)); //false
System.out.println(" j > i = " + (j > i)); //true
System.out.println(" k > j = " + (k > j)); //false
//lebih besar atau sama dengan
System.out.println("Lebih besar dari
atau sama dengan...");
System.out.println(" i >= j = " + (i >= j)); //false
System.out.println(" j >= i = " + (j >= i)); //true
System.out.println(" k >= j = " + (k >= j)); //true
//lebih kecil dari
System.out.println("Lebih kecil
dari...");
System.out.println(" i < j = " + (i < j)); //true
System.out.println(" j < i = " + (j < i)); //false
System.out.println(" k < j = " + (k < j)); //false
//lebih kecil atau sama dengan
System.out.println("Lebih kecil dari
atau sama dengan...");
System.out.println(" i <= j = " + (i <= j)); //true
System.out.println(" j <= i = " + (j <= i)); //false
System.out.println(" k <= j = " + (k <= j)); //true
//sama dengan
System.out.println("Sama
dengan...");
System.out.println(" i == j = " + (i == j)); //false
System.out.println(" k == j = " + (k == j)); //true
//tidak sama dengan
System.out.println("Tidak sama
dengan...");
System.out.println(" i != j = " + (i != j)); //true
System.out.println(" k != j = " + (k != j)); //false
}
}
Berikut adalah
hasil keluaran dari program ini :
Nilai variabel...
i = 37
i = 37
j = 42
k = 42
k = 42
Lebih besar dari...
i > j = false
i > j = false
j > i = true
k > j = false
k > j = false
Lebih besar dari atau sama dengan...
i >= j = false
i >= j = false
j >= i = true
k >= j = true
k >= j = true
Lebih kecil dari...
i < j = true
i < j = true
j < i = false
k < j = false
k < j = false
Lebih kecil dari atau sama dengan...
i <= j = true
i <= j = true
j <= i = false
k <= j = true
Sama dengan...
i == j = false
k == j = true
k <= j = true
Sama dengan...
i == j = false
k == j = true
Tidak sama dengan...
i != j = true
i != j = true
k != j = false
4.10.4
Operator logika
Operator logika memiliki satu atau lebih operand boolean yang
menghasilkan nilai boolean.
Terdapat enam operator logika yaitu: && (logika AND), & (boolean logika AND), || (logika
OR), | (boolean logika inclusive OR), ^ (boolean logika exclusive OR), dan ! (logika NOT).
Terdapat enam operator logika yaitu: && (logika AND), & (boolean logika AND), || (logika
OR), | (boolean logika inclusive OR), ^ (boolean logika exclusive OR), dan ! (logika NOT).
Pernyataan
dasar untuk operasi logika adalah,
x1
op x2
Dimana x1, x2 dapat menjadi
pernyataan boolean. Variabel atau konstanta, dan op adalah salah satu
dari operator &&, &, ||, |
atau ^. Tabel kebenaran yang akan ditunjukkan selanjutnya, merupakan kesimpulan dari hasil dari setiap
operasi untuk semua kombinasi yang mungkin
dari x1 dan x2.
4.10.4.1 && (logika
AND) dan & (boolean logika AND)
Berikut ini
adalah tabel kebenaran untuk && dan &,
x1 x2 Hasil
TRUE TRUE TRUE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE FALSE
Tabel 6: Tabel Kebenaran
untuk & dan &&
Perbedaan
dasar antara operator && dan & adalah bahwa && mensupports short-circuit
evaluations (atau evaluasi perbagian), sementara operator & tidak. Apa arti dari
evaluations (atau evaluasi perbagian), sementara operator & tidak. Apa arti dari
pernyataan
tersebut?
Diberikan suatu
pernyataan,
exp1 && exp2
&& akan
mengevaluasi pernyataan exp1,
dan segera mengembalikan
nilai false dan menyatakan
bahwa exp1 bernilai false. Jika exp1 bernilai false, operator tidak akan pernah
mengevaluasi exp2 karena hasil operasi operator akan menjadi false tanpa
memperhatikan nilai dari exp2. Sebaliknya, operator & selalu
mengevaluasi kedua nilai dari exp1 dan exp2 sebelum
mengembalikan suatu nilai jawaban.
Berikut ini
adalah suatu contoh source code yang menggunakan logika dan boolean AND,
public class TestAND
{
public static void main( String[] args ){
int i =
0;
int j =
10;
boolean test= false;
//demonstrasi &&
test = (i > 10) && (j++ > 9);
System.out.println(i);
System.out.println(j);
System.out.println(test);
System.out.println(i);
System.out.println(j);
System.out.println(test);
//demonstrasi &
test = (i > 10) & (j++ > 9);
System.out.println(i);
System.out.println(j);
System.out.println(test);
}
System.out.println(i);
System.out.println(j);
System.out.println(test);
}
}
The output of
the program is,
0
10
false
0
0
11
false
Catatan, bahwa j++
pada baris yang
mengandung operator
&& tidak dievaluasi
sejak pernyataan
pertama (i>10) yaitu telah bernilai sama dengan false.
4.10.4.2 || (logika OR) dan |
(boolean logika inclusive OR)
Berikut ini
adalah tabel kebenaran untuk || dan |,
x1 x2 Hasil
TRUE TRUE TRUE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE
Tabel
7: Table Kebenaran untuk | dan ||
Perbedaan dasar
antara operator || dan |
adalah bahwa
evaluations (atau
proses evaluasi sebagian),
sementara
pernyataan
tersebut?
diberikan suatu
pernyataan,
exp1 || exp2
||
mendukung short-circuit
| tidak. Apa maksud dari
| tidak. Apa maksud dari
|| akan
mengevaluasi pernyataan exp1,
dan segera mengembalikan
nilai true dan menyatakan bahwa exp1 bernilai true. Jika
exp1 bernilai true, operator tidak akan pernah mengevaluasi exp2 karena
hasil dari operasi
operator akan bernilai
true tanpa memperhatikan
nilai dari exp2. Sebaliknya,operator | selalu mengevaluasi kedua nilai dari exp1 and exp2 sebelum mengembalikan suatu jawaban
suatu nilai.
Berikut ini
sebuah contoh source code yang
menggunakan operator logika dan boolean OR,
public class TestOR
{
public static void main( String[] args ){
int i =
0;
int j =
10;
boolean test= false;
//demonstrasi ||
test = (i < 10) || (j++ > 9);
System.out.println(i);
System.out.println(j);
System.out.println(test);
System.out.println(i);
System.out.println(j);
System.out.println(test);
//demonstrasi |
test = (i < 10) | (j++ > 9);
System.out.println(i);
System.out.println(j);
System.out.println(test);
}
System.out.println(i);
System.out.println(j);
System.out.println(test);
}
}
Hasil keluaran
dari program ini adalah,
0
10
true
0
0
11
true
Catatan, bahwa j++ pada baris yang terdiri atas operator || tidak
dievaluasi sejak pernyataan pertama (i<10)
yaitu telah bernilai sama dengan true.
4.10.4.3 ^ (boolean logika
ExclusiveOR )
Berikut ini
adalah tabel kebenaran untuk ^,
x1 x2 Hasil
TRUE TRUE FALSE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE
Tabel 8: Tabel kebenaran
untuk ^
Hasil operasi operator exclusive OR adalah TRUE, jika dan hanya jika
satu operand bernilai TRUE dan yang lain bernilai False. Catatan jika kedua
operand harus selalu dievaluasi untuk menjumlahkan hasil dari suatu exclusive
OR.
Berikut ini adalah
contoh source code yang menggunakan operator logika exclusive OR,
public class TestXOR
{
public static void main( String[] args ){
boolean val1 = true;
boolean val2 = true;
System.out.println(val1 ^ val2);
val1 = false;
val2 = true;
System.out.println(val1 ^ val2);
val1 = false;
val2 = false;
System.out.println(val1 ^ val2);
val1 = true;
val2 = false;
System.out.println(val1 ^ val2);
}
}
Hasil keluaran
program tersebut adalah,
false
true
false
true
false
true
4.10.4.4 ! (logika NOT)
Logika NOT
digunakan dalam satu argumen, dimana argumen tersebut dapat menjadi suatu
pernyataan, variabel atau konstanta. Berikut ini adalah tabel kebenaran untuk operator
not!,
pernyataan, variabel atau konstanta. Berikut ini adalah tabel kebenaran untuk operator
not!,
x1 Hasil
TRUE FALSE
FALSE TRUE
Tabel 9: Tabel Kebenaran
untuk !
Berikut ini
adalah contoh source code yang menggunakan operator logika NOT,
public class TestNOT
{
public static void main( String[] args ){
boolean val1 = true;
boolean val2 = false;
System.out.println(!val1);
System.out.println(!val2);
}
System.out.println(!val2);
}
}
Hasil keluaran
program adalah sebagai berikut,
false
true
Operator kondisi ?: adalah operator ternary. Berarti bahwa operator ini membawa tiga argumen yang
membentuk suatu ekspresi
bersyarat. Struktur pernyataan
yang menggunakan operator kondisi adalah,
exp1?exp2:exp3
Dimana nilai exp1 adalah suatu pernyataan boolean yang memiliki hasil yang
salah satunya harus berupa
nilai true atau false.
Jika exp1 bernilai true, exp2 merupakan hasil operasi. Jika bernilai
false, kemudian exp3 merupakan hasil operasinya.
Sebagai contoh,
diberikan code sebagai berikut,
public class ConditionalOperator
{
{
public static void main( String[] args ){
String status
= "";
int grade = 80;
//mendapatkan status pelajar
status = (grade >= 60)?"Passed":"Fail";
//print status
System.out.println( status );
}
}
Hasil keluaran
dari program ini akan menjadi,
Passed
Berikut ini
adalah flowchart yang menggambarkan bagaimana
operator ?: bekerja,
class ConditionalOperator
{
public static void main( String[] args ){
int score = 0;
char answer =
'a';
score = (answer == 'a') ? 10 : 0;
System.out.println("Score = " + score );
}
}
}
Hasil keluaran
program adalah,
Score = 10
4.10.6
Operator Precedence
Operator precedence didefinisikan
sebagai perintah yang
dilakukan compiler ketika melakukan evaluasi terhadap operator,
untuk mengajukan perintah dengan hasil yang tidak ambigu/ hasil yag jelas.
Diberikan
pernyataan yang membingungkan,
6%2*5+4/2+88-10
Kita dapat menuliskan kembali pernyataan diatas dan menambahkan beberapa
tanda kurung terhadap
operator precedence,
((6%2)*5)+(4/2)+88-10;
Petunjuk
Penulisan Program:
Untuk menghindari kebingungan dalam evaluasi operasi matematika, buatlah
pernyataan sesederhana
mungkin dan gunakan bantuan tanda kurung.
EmoticonEmoticon