Banner Java

Operator Precedence Dan Ekspresi Numerik

Operator adalah simbol-simbol yang melakukan operasi khusus yang melibatkan satu, dua atau tiga operand. Operator yang didukung bahasa pemrograman Java dapat dibagi menjadi beberapa kelompok yaitu operator pemberian (assignment operator), operator aritmatika (arithmatic operator), operator unari (unary operator), operator kesamaan dan hububungan (equality and relational operator), operator bersyarat (conditional operator) dan operator perbandingan (comparison operator).

Operator Precedence.

Java mempunyai aturan untuk menentukan urutan dimana operator di dalam ekspresi dievaluasi ketika suatu ekspresi mempunyai beberapa operator. Aturan ini disebut dengan operator precedence. Operator precedence adalah urutan evaluasi dimana operator yang ada di suatu ekspresi akan dievaluasi berdasarkan aturan prioritas yang ditentukan. Operator dengan prioritas lebih tinggi akan dievaluasi terlebih dahulu dibandingkan dengan operator yang mempunyai prioritas lebih rendah. Apabila beberapa operator di dalam ekspresi mempunyai prioritas yang sama, maka operator akan dievaluasi berdasarkan asosiasi dari operator tersebut (operator association).

Berikut ini adalah tabel operator di Java dengan tingkatan prioritas:

Prioritas Operator Keterangan Asosiasi
0 (…) Kurung buka tutup Kiri ke kanan
1 ++, --, . Postincrement, Postdecrement dan titik. Kanan ke kiri
2 ++, --, +, -, ! Preincrement, Predecrement, unary plus, unary minus dan Boolean NOT. Kanan ke kiri
3 (type), new Pengkonversian tipe data dan pembuatan obyek Kanan ke kiri
4 *, /, % Perkalian, pembagian dan sisa pembagian (modulus) Kiri ke kanan
5 +, -, + Penambahan, pengurangan dan operator penggabungan string. Kiri ke kanan
6 <, >, <=, >= Relational operator Kiri ke kanan
7 ==, != Equaliti operator Kiri ke kanan
8 ^ Boolean XOR (eksklusif or) Kiri ke kanan
9 && Boolean AND Kiri ke kanan
10 || Boolean OR Kiri ke kanan
11 =, +=, -=, *=, /=, %= Operator pemberian

Perhatikan contoh ekspresi numerik Java di bawah ini.

5 + 20 * 2 – 20 / 2 + (10 - 2);

Java akan mengevaluasi ekspresi numerik tersebut dengan urutan sebagai berikut:

  1. Ekspresi numerik yang terdapat di dalam kurung buka tutup akan dievaluasi pertama kali karena mempunyai prioritas paling tinggi dibandingkan dengan operator perkalian (*), pembagian (/), penjumlahan (+) dan pengurangan (-) sehingga ekspresi numerik akan menjadi 5 + 20 * 2 – 20 / 2 + 8.
  2. Operator perkalian (*) dan pembagian (/) akan dievaluasi berikutnya mulai dari kiri ke kanan karena memiliki prioritas yang sama dan lebih tinggi dari operator penjumlahan (+) dan pengurangan (-) sehingga ekspresi numerik menjadi 5 + 40 – 10 + 8.
  3. Operator penambahan dan pengurangan mempunyai prioritas yang sama dan akan dievaluasi terakhir mulai dari kiri ke nanan sehingga menghasilkan nila 43.

Ekspresi Aritmatika dan ekspresi Java.

Anda perlu menterjemahkan ekspresi aritmatika ke dalam ekspresi numerik Java dengan menggunakan operator numerik. Bahasa pemrograman Java tidak dapat mengeksekusi ekspresi numerik aritmatika karena adanya simbol yang tidak sama atau tidak dikenali. Sebagai contoh, rumus luas persegi panjang dapat ditulis dalam bentuk ekspresi aritmatika dengan notasi p.l atau p x l, dimana p dan l adalah veriabel tipe-tipe numerik. Agar ekspresi numerik tersebut dapat dimengerti oleh Java, Anda harus merubahnya terlebih dahulu ke dalam ekspresi Java menjadi p * l. Karakter asterisk (*) di dalam bahasa pemrograman Java digunakan untuk mewakili operator perkalian, sedangkan di aritmatika menggunakan karakter x atau titik (.) atau langsung ditulis pl. Berikut ini adalah contoh ekspresi aritmatika yang harus dirubah terlebih dahulu ke dalam ekspresi Java sebelum digunakan di dalam program:

Ekspresi aritmatika di atas dapat diterjemahkan ke dalam ekspresi Java sebagai berikut:

Berikut ini adalah contoh program yang mendemonstrasikan pemberian nilai ke variabel dalam bentuk ekspresi Java.

// Nama file : EkspresiJava.java
// Memberi nilai ke variabel dengan ekspresi Java

// Deklarasi kelas
public class EkspresiJava {

   // Metoda main
   public static void main(String[] args) {

      // Deklarasi dan memberi nilai awal ke variabel
      int x = 20, y = 10;
      boolean nilaiBoolean = false;

      // Deklarasi variabel
      int nilaiEkspresiSatu, nilaiEkspresiTiga, nilaiEkspresiEmpat;
      boolean nilaiEkspresiDua;

      // Memberi nilai ke variabel dengan ekspresi Java
      nilaiEkspresiSatu = 5 + x * 2 - x / 2 + (y - 2);
      nilaiEkspresiDua = !nilaiBoolean;
      nilaiEkspresiTiga = ++x - --y;
      nilaiEkspresiEmpat = 40 + x * y + 25;

      // Menampilkan nilai variabel hasil dari evaluasi ekspresi
      System.out.println();
      System.out.println("nilaiEkspresiSatu = " + nilaiEkspresiSatu);
      System.out.println("nilaiEkspresiDua = " + nilaiEkspresiDua);
      System.out.println("nilaiEkspresiTiga = " + nilaiEkspresiTiga);
      System.out.println("nilaiEkspresiEmpat = " + nilaiEkspresiEmpat);
   }
}   

Operator precedence dan ekspresi numerik di Java

Untuk memperbaiki mutu konten, Anda dapat berpartisipasi dengan cara melaporkan apabila menemukan kesalahan ketik, kata-kata rangkap, redaksi kurang pas (jelas), gambar pendukung tidak ada dan sebagainya melalui form Kontak Kami untuk mendapatkan perbaikan. Terima kasih atas kerjasamanya.

Hindro HindriantoHindro adalah pendiri sekaligus admin termasmedia.com dan topikit.com, blog online yang mengulas teknologi informasi. Dunia web mulai ditekuni tahun 2012 dengan mempelajari CMS Joomla dan Wordpress. Beberapa buku yang sekarang dipelajari antara lain PHP, HTML5, ASP.NET 4.5, JavaScript, CSS3, MySQL, Adobe Dreamweaver, Adobe Photoshop dan Adobe Flash.