Operator



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 j = 42;
double x = 27.475;
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));






x = 27.475
    y = 7.22
    i + j = 79
 Adding...
x + y = 34.695
Subtracting...
    i - j = -5
x - y = 20.255
Multiplying...
    i * j = 1554
    x * y = 198.37
 Dividing...
    i / j = 0
x / y = 3.8054
Computing the remainder...
    i % j = 37
x % y = 5.815
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;
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;
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



















Berikut ini adalah contoh program yang menggunakan operator Relasi,
public class RelasiDemo
{
public static void main(String[] args) { //beberapa nilai
int i = 37;
int j = 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
j = 42
k = 42
Lebih besar dari...
    i > j = false
j > i = true
k > j = false
Lebih besar dari atau sama dengan...
    i >= j = false
j >= i = true
k >= j = true
Lebih kecil dari...
    i < j = true
j < i = false
k < j = false
Lebih kecil dari atau sama dengan...
    i <= j = true
j <= i = false
    k <= j = true
 Sama dengan...
    i == j = false
    k == j = true
Tidak sama dengan...
    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).

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
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);
//demonstrasi &
test = (i > 10) & (j++ > 9);
      System.out.println(i);
      System.out.println(j);
      System.out.println(test);
 }
}





The output of the program is,

0
10
false
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


||  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);
//demonstrasi |
test = (i < 10) | (j++ > 9);
      System.out.println(i);
      System.out.println(j);
      System.out.println(test);
 }
}




Hasil keluaran dari program ini adalah,

0
10
true
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









 

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!,

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);
 }
}

Hasil keluaran program adalah sebagai berikut,
false
true











4.10.5 Operator Kondisi(?:)
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,
















Berikut ini adalah program lain yang menggunakan operator ?: ,

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