Expression adalah hal – hal mendasar dalam proses perhitungan di dalam bahasa pemrograman. Expression adalah susunan yang terdiri dari operand dan operator. Sedangkan Assignment statement adalah statement yang terdiri dari asiignment operator (=) yang berfungsi untuk menetapkan/menstore nilai dari hasil sebuah expression pada sebuah variabel. Penulisan code sederhananya dapat ditulis :
variabel = expression;
contohnya :
int a = b * 2 + 1;
Untuk dapat lebih memahami expression evaluation maka kita harus lebih dahulu mengenal dan memahami urutan dari operator dan operand evaluation.
- Arithmetic Expression
Arithmetic Expression terdiri dari operator, operand, parentheses, dan function call.
Operator adalah simbol untuk memproses nilai/beberapa nilai yang akan menghasilkan suatu nilai yang baru. Arithmetic operator sendiri dibagi menjadi tiga, yaitu :
- Unary operator, operator yang hanya mempunyai 1 operand
- Binary operator, operator yang memiliki 2 operand
- Ternary operator, operator yang memiliki 3 operand
Unary Arithmetic Operators dalam Java
Unary Plus ( +A ) : mengindikasikan sebuah variabel/nilai adalah positif (tidak digunakan juga berarti sama)
Contoh : +num, +num / 5, num1 * +num2
Unary Minus ( – A ) : menindikasikan bahwa sebuah variabel/nilai bernilai negatif
Contoh : -num, -num / 5, num1 * -num2
Pre-increment Operator: menambah nilai operator secara langsung tanpa harus menunggu eksekusi berikutnya. Contoh syntax ++<variable-name>
Post-increment Operator: menambah Nilai operand yang tersimpan pada memori yang akan berubah pada eksekusi berikutnya. Contoh syntax <variable-name>++
Pre-decrement Operator: mengurangi nilai operand secara langsung tanpa harus menunggu eksekusi berikutnya. Contoh syntax – -<variable-name>
Post-decrement Operator: mengurangi Nilai operand yang tersimpan pada memori yang akan berubah pada eksekusi berikutnya. Contoh syntax <variable-name> – –
Binary Arithmetic Operators dalam Java
Arithmetic Operation digunakan untuk melakukan operasi matematika, seperti penambahan, pengurangan, pembagian, dan modulus (sisa pembagian), namun bisa juga digunakan untuk menggabungkan string
Simbol | Nama Operator | Contoh |
+ | Penjumlahan | a = b + c |
– | Pengurangan | a = b – c |
* | Perkalian | a = b * c |
/ | Pembagian | a = b / c |
% | Modulus | a = b % c |
+ | Penggabungan String | a = “Hello “ + “World” |
Ternary Operators dalam Java
Dipakai dalam conditional statements dengan sintaks (Condition) ? (kondisi jika true) : (kondisi jika false)
Contoh : int score; char status;
status = (score >= 70)? ‘P’ : ‘F’ ; // P =>pass, F =>failed
- Aturan Presedence dan Associativity dalam Operator
Presedence adalah aturan urutan eksekusi operator berdasarkan tingkat prioritasnya, dimana operator yang memiliki tingkat presedence paling tinggi akan dieksekusi lebih dulu. Sedangkan Assosiative adalah aturan urutan eksekusi operator berdasarkan lokasinya pada suatu expression (dari kiri/kanan), dimana Assosiative ini dipakai dalam operator dengan tingkat presedence yang sama.
- Operand Evaluation Order
Operand Evaluation Order adalah aturan urutan pengambilan nilai suatu operand dari memory. Dalam Java, operand evaluation ordernya dari kiri ke kanan dalam suatu expression.
- Overloaded Operator
Overloaded Operator adalah operator yang digunakan untuk lebih dari satu tujuan. Dalam Java tidak diperbolehkan menggunakan user-defined overloaded.
- Type Convertion
Type Convertion adalah cara merubah suatu tipe data ke tipe data lain, dapat terbagi menjadi 2 jenis yaitu narrowing convertion (merubah tipe data sehingga nilai yang terambil tidak mencakup seluruh nilai tipe data awal contohnya dari double ke float) dan widening convertion (konversi yang dapat mencakup setidaknya sama dengan nilai tipe data awal contohnya int ke float). Sedangkan jika berdasarkan cara konversinya juga terbagi 2 yaitu secara implisit (terkonversi secara otomatis, biasa terjadi dalam mix mode yaitu ketika ada 2 tipe data berlainan dalam suatu expression) dan eksplisit (dikonversi oleh programmer dengan coding atau biasa disebut casting).
Dalam Java, konversi secara implisit hanya terjadi ketika mix mode assignmentnya berjenis widening. Berikut adalah contohnya.
Sedangkan untuk narrowing conversion dalam Java harus menggunakan konversi secara eksplisit, berikut contoh cara konversi secara eksplisit dalam Java:
- Boolean Expressions
Bahasa pemrograman Java memiliki tipe data boolean, yaitu tipe data yang memiliki nilai true atau false.
- Relational Expressions
Expression yang membandingkan dua nilai operand dimana hasilnya adalah tipe data boolean (true atau false). Berikut adalah relational (equality) operator dan contoh programnya dalam Java :
== Equal to
!= Not equal to
>Greater than
>= Greater than or equal to
< Less than
<= Less than or equal to
- Conditional Expressions
Expression yang membandingkan dua boolean expression dimana hasilnya nanti adalah sebuah boolean juga. Berikut contoh conditional operator dan contoh code dalam Java
- Comparison Operator Instanceof
Java memiliki instanceof operator membandingkan suatu objek dengan suatu tipe yang spesifik. Ini dapat dipakai untuk menegtahui/mengetes apakah suatu objek adalah instance dari class, instance dari subclass, atau instance dari class yang mengimplementasikan bagian dari interface. Berikut contoh program menggunakan comparison operator.
- Assignment Statements
Assigment statements dalam Java menggunakan symbol sama dengan (=) untuk memasukan nilai hasil expression pada suatu variabel.
Syntax secara umum : <target variabel><assignment operator><expression>
- Compound Assignment Operator
Operator yang melakukan proses perhitungan dan memasukan nilai hasilnya sekaligus secara bersamaan. Semua binary arithmetic operator dalam Java memiliki fungsi yang sama dengan compound assignment operator, berikut adalah tabelnya.
Expression | Compound Assignment Operator |
a = a + b; | a += b; |
a = a – b; | a -= b; |
a = a * b; | a *= b; |
a = a / b; | a /= b; |
a = a % b; | a %= b; |