1. Ekspresi vs pernyataan
Di Jawa, sangat membantu untuk membedakan antara dua kategori: pernyataan dan ekspresi . Sebuah pernyataan biasanya dikatakan dieksekusi , sedangkan ekspresi dikatakan dievaluasi . Tapi itu bukan hal yang paling penting.
Perbedaan utama antara pernyataan dan ekspresi adalah mengevaluasi ekspresi memiliki hasil . Dan hasil ini memiliki tipe, dan dapat ditugaskan ke variabel atau digunakan dalam ekspresi lain.
Contoh:
Kode | Catatan |
---|---|
int x; |
Penyataan |
(a < 10) |
Ekspresi yang tipenyaboolean |
i++; |
Ekspresi yang tipenya sama dengan tipe i variabel |
x = 5; |
Ekspresi yang tipenya sama dengan tipe x variabel |
Dan apa yang diberikan ini kepada kita?
Pertama, kita dapat memanfaatkan fakta bahwa banyak pernyataan sebenarnya adalah ekspresi (artinya mereka mengevaluasi nilai). Misalnya, kode seperti ini akan berfungsi:
Kode | Catatan |
---|---|
|
|
Kedua, jika kita mau, kita bisa mengabaikan hasil evaluasi ekspresi.
Kode | Kode tempat kami mengabaikan hasilnya: |
---|---|
|
|
Kami mengabaikan hasil evaluasi ekspresi, misalnya, jika ekspresi melibatkan melakukan sesuatu yang bermanfaat, dan tindakan ini yang penting bagi kami, bukan hasil itu sendiri.
2. Operator ternary
Peretasan kehidupan ini sudah lebih menarik dari yang sebelumnya. Java memiliki operator ternary khusus . Sintaksnya agak mirip dengan sintaks untuk pernyataan :if-else
Condition ? Expression 1 : Expression 2;
Jika kondisi benar, maka Ekspresi 1 akan dievaluasi, jika tidak maka Ekspresi 2 akan dievaluasi. Kondisi tersebut diikuti dengan tanda tanya , dan kedua ekspresi tersebut dipisahkan oleh titik dua .
Perbedaan utama antara operator ternary dan if-else
pernyataan adalah bahwa operator ternary adalah ekspresi, yang artinya kita dapat menetapkan hasilnya ke sesuatu.
Misalnya, kita ingin menghitung minimal dua angka. Menggunakan operator ternary, kode ini akan terlihat seperti ini:
int a = 2;
int b = 3;
int min = a < b ? a : b;
Atau, katakanlah Anda perlu menetapkan nilai yang berbeda ke variabel tergantung pada beberapa kondisi. Bagaimana kamu melakukannya?
Salah satu opsi adalah menggunakan if-else
pernyataan:
int age = 25;
int money;
if (age > 30)
money = 100;
else
money = 50;
Opsi kedua adalah menggunakan operator ternary , yaitu singkatan dari if-else
pernyataan:
int age = 25;
int money = age > 30 ? 100 : 50;
Jadi mana yang lebih baik untuk digunakan - sebuah if-else
pernyataan atau operator ternary ? Dalam hal kecepatan eksekusi, tidak banyak perbedaan. Ini lebih merupakan masalah keterbacaan kode. Dan ini adalah poin yang sangat penting: kode tidak hanya harus bekerja dengan benar, tetapi juga mudah dibaca oleh programmer lain.
Aturan paling sederhana adalah ini: jika kode cocok pada satu baris , maka gunakan operator ternary ; tetapi jika tidak muat dalam satu baris, maka lebih baik menggunakan if-else
pernyataan.
3. Membandingkan bilangan real
Seperti disebutkan sebelumnya, Anda tidak bisa hanya mengambil bilangan real dan membandingkannya. Selalu ada kemungkinan bahwa beberapa angka penting dapat dibuang, menyebabkan efek samping yang tidak terduga.
Itu sebabnya ada pendekatan yang telah teruji oleh waktu. Jika dua bilangan real berbeda dengan nilai yang sangat kecil, maka keduanya dapat dianggap sama. Contoh:
double a = 1.000001;
double b = 1.000002;
if ( (b - a) < 0.0001 )
System.out.println("The numbers are equal");
else
System.out.println("The numbers are not equal");
Tapi bukan itu saja yang perlu kita khawatirkan, karena perbedaan antara angka-angka tersebut mungkin saja negatif. Jadi agar pendekatan ini berhasil, Anda perlu membandingkan tidak hanya perbedaan antara angka-angka, tetapi juga nilai absolut dari perbedaan antara angka-angka tersebut:|a-b|
Java memiliki metode untuk menghitung nilai absolut dari sebuah angka: Math.abs()
:
int m = Math.abs(value);
Akibatnya, versi yang dikoreksi dari contoh kami di atas akan terlihat seperti ini:
double a = 1.000001;
double b = 1.000002;
if ( Math.abs(b - a) < 0.0001 )
System.out.println("The numbers are equal");
else
System.out.println("The numbers are not equal");
GO TO FULL VERSION