Salah satu kegunaan paling mendasar dari komputer adalah untuk melakukan operasi matematika. Sebagai bahasa komputer, Java juga menyediakan serangkaian operator untuk memanipulasi variabel. Kami dapat membagi operator ke dalam kelompok berikut:
Operator aritmatika digunakan dalam ekspresi matematika dan cara kerjanya sama seperti dalam matematika. Tabel berikut mencantumkan semua operator aritmatika.
Contoh pada tabel mengasumsikan variabel integer A bernilai 10 dan variabel B bernilai 20:
Operator | menggambarkan | contoh |
---|---|---|
+ | Penjumlahan – nilai di kedua sisi operator penjumlahan | A + B sama dengan 30 |
- | Pengurangan - operan kiri dikurangi operan kanan | A – B sama dengan -10 |
* | Perkalian - Mengalikan nilai di kedua sisi operator | A*B sama dengan 200 |
/ | Divisi - membagi operan kiri dengan operan kanan | B/A sama dengan 2 |
% | Modulo - sisa operan kiri dibagi operan kanan | B%A sama dengan 0 |
++ | Kenaikan - meningkatkan nilai operan sebesar 1 | B++ atau ++B sama dengan 21 |
-- | Penurunan - mengurangi nilai operan sebesar 1 | B-- atau --B sama dengan 19 |
Meskipun keduanya meningkat sendiri (hasil operasinya sama dengan B+1), masih ada perbedaan antara B++ dan ++B. ++B adalah nilai l dan beroperasi langsung di tempat (dapat dipahami sebagai + langsung pada variabel B 1), B++ adalah nilai r. Saat beroperasi di kompiler, variabel sementara akan dibuat terlebih dahulu, kemudian variabel sementara akan digunakan untuk menghitung +1 dan kemudian ditetapkan ke B.
Oleh karena itu, pada contoh kode di bawah ini, ketika mencetak d++, ditemukan bahwa hasilnya bukan +1 (variabel d dicetak saat ini, dan variabel sementara d dioperasikan), tetapi hasil yang ditampilkan pada cetakan berikutnya pernyataannya +1 lagi. Hasil akhir (nilai variabel sementara ditugaskan ke variabel d). Hasil print ++d langsung +1.
Contoh program sederhana berikut menunjukkan operator aritmatika. Salin dan tempel program Java berikut dan simpan sebagai file Test.java, lalu kompilasi dan jalankan program:
public class Test { public static void main(String args[]) { int a = 10; int b = 20; int c = 25; int d = 25; System.out.println("a + b = " + (a + b) ); System.out.println("a - b = " + (a - b) ); System.out.println("a * b = " + (a * b) ); System.out.println("b / a = " + (b / a) ); System.out.println("b % a = " + (b % a) ); System.out.println("c % a = " + (c % a) ); System.out.println("a++ = " + (a++) ); System.out.println("a-- = " + (a--) ); // 查看d++ 与++d 的不同System.out.println("d++ = " + (d++) ); System.out.println("d = " + d); System.out.println("++d = " + (++d) ); } }
Hasil kompilasi dan running dari contoh di atas adalah sebagai berikut:
a + b = 30 a - b = -10 a * b = 200 b / a = 2 b % a = 0 c % a = 5 a++ = 10 a-- = 11 d++ = 25 d =26 ++d = 27
Tabel berikut menunjukkan operator relasional yang didukung oleh Java
Contoh variabel integer A pada tabel bernilai 10 dan variabel B bernilai 20:
operator | menggambarkan | contoh |
---|---|---|
== | Mengecek apakah nilai kedua operan sama, jika iya maka kondisinya benar. | (A == B) salah (tidak benar). |
!= | Mengecek apakah nilai kedua operan sama, jika nilainya tidak sama maka kondisi benar. | (A != B) benar. |
> | Mengecek apakah nilai operan kiri lebih besar dari nilai operan kanan, jika iya maka kondisi menjadi benar. | (A>B) tidak benar. |
< | Mengecek apakah nilai operan kiri lebih kecil dari nilai operan kanan, jika iya maka kondisi menjadi benar. | (A < B) benar. |
>= | Mengecek apakah nilai operan kiri lebih besar atau sama dengan nilai operan kanan, jika iya maka kondisi menjadi benar. | (A>=B) salah. |
<= | Mengecek apakah nilai operan kiri lebih kecil atau sama dengan nilai operan kanan, jika iya maka kondisi menjadi benar. | (A <= B) benar. |
Contoh program sederhana berikut menunjukkan operator relasional. Salin dan tempel program Java berikut dan simpan sebagai file Test.java, lalu kompilasi dan jalankan program:
public class Test { public static void main(String args[]) { int a = 10; int b = 20; System.out.println("a == b = " + (a == b) ); System.out.println("a != b = " + (a != b) ); System.out.println("a > b = " + (a > b) ); System.out.println("a < b = " + (a < b) ); System.out.println("b >= a = " + (b >= a) ); System.out.println("b <= a = " + (b <= a) ); } }
Hasil kompilasi dan running dari contoh di atas adalah sebagai berikut:
a == b = false a != b = true a > b = false a < b = true b >= a = true b <= a = false
Java mendefinisikan operator bitwise, yang berlaku untuk tipe integer (int), integer panjang (long), integer pendek (pendek), tipe karakter (char), dan tipe byte (byte).
Operator bitwise beroperasi pada semua bit dan beroperasi secara bitwise. Asumsikan a = 60, dan b = 13; representasi format binernya adalah sebagai berikut:
A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A | B = 0011 1101 A ^ B = 0011 0001 ~A= 1100 0011
Tabel berikut mencantumkan operasi dasar operator bitwise, dengan asumsi variabel integer A bernilai 60 dan variabel B bernilai 13:
Operator | menggambarkan | contoh |
---|---|---|
& | Operator AND bitwise, hasilnya adalah 1 jika dan hanya jika bit tertentu dari kedua operan bukan 0. | (A&B), dapatkan 12, yaitu 0000 1100 |
| | Operator Bitwise OR, selama bit tertentu dari kedua operan bukan 0, hasilnya akan menjadi 1. | (A|B) mendapat 61, yaitu 0011 1101 |
^ | Operator XOR bitwise, jika bit tertentu dari kedua operan berbeda, bit hasilnya adalah 1. | (A^B) memberi kita 49, yaitu 0011 0001 |
~ | Operator komplemen bitwise membalik setiap bit operan. | (~A) mendapat -61, yaitu 1100 0011 |
<< | Operator shift kiri sedikit demi sedikit. Operan kiri digeser ke kiri dengan jumlah bit yang ditentukan oleh operan kanan. | A << 2 memberi kita 240, yaitu 1111 0000 |
>> | Operator shift kanan bitwise. Operan kiri digeser sedikit ke kanan sesuai jumlah bit yang ditentukan oleh operan kanan. | A >> 2 mendapat 15 yaitu 1111 |
>>> | Operator zero-padding geser ke kanan secara bitwise. Nilai operan kiri digeser ke kanan dengan jumlah bit yang ditentukan oleh operan kanan, dan kekosongan yang dihasilkan diisi dengan nol. | A>>>2 mendapat 15 yaitu 0000 1111 |
Contoh program sederhana berikut menunjukkan operator bitwise. Salin dan tempel program Java berikut dan simpan sebagai file Test.java, lalu kompilasi dan jalankan program:
public class Test { public static void main(String args[]) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ System.out.println("a & b = " + c ); c = a | b; /* 61 = 0011 1101 */ System.out.println("a | b = " + c ); c = a ^ b; /* 49 = 0011 0001 */ System.out.println("a ^ b = " + c ); c = ~a; /*-61 = 1100 0011 */ System.out.println("~a = " + c ); c = a << 2; /* 240 = 1111 0000 */ System.out.println("a << 2 = " + c ); c = a >> 2; /* 215 = 1111 */ System.out.println("a >> 2 = " + c ); c = a >>> 2; /* 215 = 0000 1111 */ System.out.println("a >>> 2 = " + c ); } }
Hasil kompilasi dan running dari contoh di atas adalah sebagai berikut:
a & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a << 2 = 240 a >> 2 = 15 a >>> 2 = 15
Tabel berikut mencantumkan operasi dasar operator logika, dengan asumsi variabel Boolean A benar dan variabel B salah
Operator | menggambarkan | contoh |
---|---|---|
&& | Disebut operator logika AND. Suatu kondisi bernilai benar jika dan hanya jika kedua operan bernilai benar. | (A && B) salah. |
| | Disebut operator logika OR. Kondisi bernilai benar jika salah satu dari kedua operan bernilai benar. | (A | | B) benar. |
! | Disebut operator logika NOT. Digunakan untuk membalikkan keadaan logis operan. Jika kondisinya benar, operator logika NOT akan bernilai salah. | ! (A && B) benar. |
Contoh program sederhana berikut menunjukkan operator logika. Salin dan tempel program Java berikut dan simpan sebagai file Test.java, lalu kompilasi dan jalankan program:
public class Test { public static void main(String args[]) { boolean a = true; boolean b = false; System.out.println("a && b = " + (a&&b)); System.out.println("a || b = " + (a||b) ); System.out.println("!(a && b) = " + !(a && b)); } }
Hasil kompilasi dan running dari contoh di atas adalah sebagai berikut:
a && b = false a || b = true !(a && b) = true
Berikut ini adalah operator penugasan yang didukung oleh bahasa Java:
Operator | menggambarkan | contoh |
---|---|---|
= | Operator penugasan sederhana, memberikan nilai operan kanan ke operan kiri | C = A + B akan menetapkan nilai yang diperoleh A + B ke C |
+ = | Operator penugasan tambahan, yang menambahkan operan kiri dan operan kanan serta memberikan nilai pada operan kiri | C + = A setara dengan C = C + A |
- = | Operator pengurangan dan penugasan, yang mengurangi operan kiri dan operan kanan dan memberikan nilai ke operan kiri | C - = A setara dengan C = C - A |
* = | Operator perkalian dan penugasan, yang mengalikan operan kiri dan operan kanan serta memberikan nilai pada operan kiri | C*=A setara dengan C=C*A |
/ = | Operator pembagian dan penugasan membagi operan kiri dan operan kanan serta memberikan nilai pada operan kiri. | C / = A setara dengan C = C / A |
(%)= | Modulo dan operator penugasan, yang memodulasi operan kiri dan kanan serta memberikan nilai pada operan kiri | C%=A setara dengan C=C%A |
<< = | operator penugasan shift kiri | C << = 2 setara dengan C = C << 2 |
>>= | operator penugasan shift kanan | C >> = 2 setara dengan C = C >> 2 |
&= | bitwise DAN operator penugasan | C&=2 setara dengan C=C&2 |
^ = | Operator penugasan XOR bitwise | C^=2 setara dengan C=C^2 |
| | Operator penugasan Bitwise ATAU | C|=2 setara dengan C=C|2 |
Contoh program sederhana berikut menunjukkan operator penugasan. Salin dan tempel program Java berikut dan simpan sebagai file Test.java, lalu kompilasi dan jalankan program:
public class Test { public static void main(String args[]) { int a = 10; int b = 20; int c = 0; c = a + b; System.out.println("c = a + b = " + c ); c += a ; System.out.println("c += a = " + c ); c -= a ; System.out.println("c -= a = " + c ); c *= a ; System.out.println("c *= a = " + c ); a = 10; c = 15; c /= a ; System.out.println("c /= a = " + c ); a = 10; c = 15; c %= a ; System.out.println("c %= a = " + c ); c <<= 2 ; System.out.println("c <<= 2 = " + c ); c >>= 2 ; System.out.println("c >>= 2 = " + c ); c >>= 2 ; System.out.println("c >>= a = " + c ); c &= a ; System.out.println("c &= a= " + c ); c ^= a ; System.out.println("c ^= a= " + c ); c |= a ; System.out.println("c |= a= " + c ); } }
Hasil kompilasi dan running dari contoh di atas adalah sebagai berikut:
c = a + b = 30 c += a = 40 c -= a = 30 c *= a = 300 c /= a = 1 c %= a = 5 c <<= 2 = 20 c >>= 2 = 5 c >>= 2 = 1 c &= a = 0 c ^= a = 10 c |= a = 10
Operator bersyarat juga dikenal sebagai operator ternary. Operator ini memiliki tiga operan dan perlu mengevaluasi nilai ekspresi Boolean. Tujuan utama dari operator ini adalah untuk memutuskan nilai mana yang harus diberikan pada variabel.
variable x = (expression) ? value if true : value if false
public class Test { public static void main(String args[]){ int a , b; a = 10; b = (a == 1) ? 20: 30; System.out.println( "Value of b is : " + b ); b = (a == 10) ? 20: 30; System.out.println( "Value of b is : " + b ); } }
Hasil kompilasi dan running dari contoh di atas adalah sebagai berikut:
Value of b is : 30 Value of b is : 20
Operator ini digunakan untuk mengoperasikan instance objek dan memeriksa apakah objek tersebut bertipe tertentu (tipe kelas atau tipe antarmuka).
Operator instanceof digunakan dalam format berikut:
( Object reference variable ) instanceof (class/interface type)
Jika objek yang ditunjuk oleh variabel di sebelah kiri operator adalah objek kelas atau antarmuka (class/interface) di sebelah kanan operator, maka hasilnya benar.
Berikut ini contohnya:
String name = 'James'; boolean result = name instanceof String; // 由于name是String类型,所以返回真
Operator ini masih mengembalikan nilai true jika objek yang dibandingkan kompatibel dengan tipe tangan kanan.
Lihatlah contoh berikut:
class Vehicle {} public class Car extends Vehicle { public static void main(String args[]){ Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println( result); } }
Hasil kompilasi dan running dari contoh di atas adalah sebagai berikut:
true
Ketika beberapa operator muncul dalam sebuah ekspresi, operator mana yang muncul lebih dulu? Ini melibatkan masalah prioritas operator. Dalam ekspresi multi-operator, prioritas operator yang berbeda akan menghasilkan hasil akhir yang sangat berbeda.
Misalnya (1+3) + (3+2)*2, jika persamaan ini dihitung berdasarkan tanda tambah sebagai prioritas tertinggi, maka jawabannya adalah 18, dan jika tanda perkalian adalah prioritas tertinggi, maka jawabannya adalah 14.
Contoh lain x = 7 + 3 * 2; di sini x mendapat 13, bukan 20, karena operator perkalian mempunyai prioritas lebih tinggi daripada operator penjumlahan, jadi 3 * 2 dihitung terlebih dahulu untuk mendapatkan 6, baru kemudian dijumlahkan 7.
Operator dengan prioritas tertinggi pada tabel berikut berada di bagian atas tabel, dan operator dengan prioritas terendah berada di bawah tabel.
kategori | Operator | relevansi |
---|---|---|
akhiran | () [] (operator titik) | kiri ke kanan |
satu yuan | + + -! ~ | kanan ke kiri |
perkalian | */% | kiri ke kanan |
Aditivitas | + - | kiri ke kanan |
menggeser | >> >>> << | kiri ke kanan |
hubungan | >> = << = | kiri ke kanan |
setara | == != | kiri ke kanan |
Sedikit demi sedikit DAN | & | kiri ke kanan |
XOR sedikit demi sedikit | ^ | kiri ke kanan |
Sedikit demi sedikit ATAU | | | kiri ke kanan |
logis DAN | && | kiri ke kanan |
logis atau | | | kiri ke kanan |
kondisi | ? : | kanan ke kiri |
Penugasan | = + = - = * = / =%= >> = << =&= ^ = | | kanan ke kiri |
koma | , | kiri ke kanan |