Prioritas operator - 1

"Hai, Bilaabo!"

"Bilaabo dengan senang hati menyapa temannya!"

"Hari ini Bilaabo akan memberi tahu Anda tentang prioritas operator. Tapi pertama-tama dia akan memberi tahu Anda tentang operator itu sendiri."

"Operator apa yang kamu bicarakan ini?"

"Sebenarnya, kamu sudah familiar dengan mereka. Kamu mungkin tidak tahu kalau mereka disebut operator."

"Misalnya, katakanlah kita memiliki ekspresi  c = a + b; "

"Ini memiliki dua operator: operator penambahan dan operator penugasan."

"Dengan kata lain, operator hanyalah tanda matematika? Seperti perkalian, pembagian, dan penjumlahan?"

"Ya, itu benar. Namun, ada perbedaannya."

"Saya tidak akan mendefinisikan operator untuk Anda: definisi tidak akan membuat Anda lebih pintar. Lebih baik melihatnya beraksi. Operator dapat dibagi menjadi beberapa kelompok, yang akan kita periksa sekarang."

1) " Operator matematika "

Simbol Contoh Nama Deskripsi (apa fungsinya)
+ a + b operator tambahan operator tambahan.
- c - d Operator pengurangan Kurangi angka kedua dari yang pertama.
* a * t Operator perkalian Mengalikan dua angka.
/ a / b operator divisi Membagi angka pertama dengan angka kedua.
% c % d Membagi angka pertama dengan angka kedua. Menghitung sisa setelah membagi angka pertama dengan angka kedua.
- -a Minus unary Mengubah tanda variabel menjadi kebalikannya.
Plus ke minus, dan minus ke plus.
+ +a Unari plus Tidak mengubah apapun. Ini ditambahkan untuk melengkapi operator minus unary. Itu hanya untuk penampilan.

"Saya mengenali ini dari sekolah. Firmware saya menyertakan kursus sekolah."

"Tapi, ada apa dengan tanda persen itu, semacam sihir?"

"Ini adalah operator" sisa setelah pembagian ". Jika 11 dibagi dengan 5, maka kita mendapatkan 2 dan sisa 1. 1 ini dapat diperoleh dengan menulis 11% 5;"

"Saat Anda membagi bilangan bulat di Jawa, hasilnya juga bilangan bulat. Sisa dari operasi pembagian diabaikan begitu saja. Jika kita membagi 8 dengan 5, kita mendapatkan 1."

Ekspresi Hasil
19 / 10 1 Jika kita membagi 19 dengan 10, hasilnya adalah 1 dengan sisa 9.
19 % 10 9 Jika kita membagi 19 dengan 10, hasilnya adalah 1 dengan sisa 9.
2 / 5 0 Jika kita membagi 2 dengan 5,  hasilnya adalah 0 dengan sisa 2.
16 % 2 0 Jika kita membagi 16 dengan 2, hasilnya adalah 8 dengan sisa 0.

"Tapi untuk apa kita membutuhkan sisanya?"

"Misalkan Anda perlu memeriksa apakah bilangan bulat genap. Kemudian Anda dapat menulis:"

if (a % 2 == 0)

"Dan jika Anda perlu memeriksa apakah b ganjil, maka Anda dapat menulis:"

if (b % 2 == 1)

"Atau untuk memeriksa apakah d habis dibagi 3:"

if (d % 3 == 0)

"Menarik. Aku akan mengingatnya."

2)  " Operator perbandingan "

Simbol Contoh Nama Deskripsi (apa fungsinya)
< a < b Kurang dari Cek untuk melihat apakah a kurang dari b.
<= c <= d Kurang dari atau sama dengan Periksa untuk melihat apakah c kurang dari atau sama dengan d.
> a > b Lebih besar dari Periksa untuk melihat apakah a lebih besar dari b.
>= c >= d Lebih dari atau sama dengan Periksa untuk melihat apakah c lebih besar dari atau sama dengan d.
== i == j sama Memeriksa apakah i sama dengan j.
!= a != 0 Tidak sama dengan Memeriksa untuk melihat apakah a tidak sama dengan nol.

"Aku sudah menggunakan semua ini."

"Dan apa perbedaan utama antara operator ini dan operator matematika?"

"Jika kita menjumlahkan dua angka, kita mendapatkan angka; tetapi, jika kita membandingkan dua angka, kita mendapatkan benar atau salah."

"Betul. Hasil perbandingan adalah nilai " nilai logis ", yang seperti yang Anda ketahui, diwakili oleh tipe boolean. Ada dua kemungkinan: benar atau salah.

"Ya, semuanya jelas. Aku sudah mengetahuinya."

3) " Operator logis "

Simbol Contoh Nama Deskripsi (apa fungsinya)
&& a && b DAN Hasil ekspresi benar hanya jika a dan b benar.
|| c || d ATAU Hasil ekspresi benar jika a atau b benar. Keduanya atau setidaknya satu.
! !a BUKAN Hasil ekspresi benar hanya jika a salah.

"Operator logis hanya dapat digunakan dengan variabel atau ekspresi boolean."

Contoh Keterangan
boolean a = true;
boolean b = true;if (a && b)
Kondisi if benar jika kedua nilai benar
Dengan kata lain, jika a dan b keduanya benar, maka hasilnya benar .
boolean a = true;
boolean b = false;if (a || b)
Kondisi if benar jika setidaknya satu nilai benar
Dengan kata lain, jika a atau b benar, maka hasilnya benar .
boolean b = false;

if (!b)

Kondisi if benar jika b tidak benar.
Dengan kata lain, jika   b salah , maka hasilnya  benar .
int a = 2, b = 3, c = 4;

if (a < b && a < c)
if ((a < b) && (a < c))

Jika a lebih kecil dari b dan a lebih kecil dari c, maka hasil ekspresi benar.
a, b, dan c adalah bilangan bulat, tetapi hasil perbandingan bilangan bulat adalah nilai logika (true, false), yang berarti kita dapat menggunakan operator logika.

"Aku sudah tahu semua ini."

"Benarkah? Kalau begitu, ayo lanjutkan."

4) " Operator bitwise "

Simbol Contoh Nama Deskripsi (apa fungsinya)
& a & b DAN Sedikit demi sedikit DAN
| c | d ATAU Sedikit demi sedikit ATAU
~ ~a BUKAN Bitwise TIDAK
^ a ^ b XOR Bitwise "EKSKLUSIF ATAU"

" Operator bitwise melakukan operasi bit demi bit pada bilangan bulat."

"Apa itu?"

"Setiap angka direpresentasikan sebagai satu set bit, dan kemudian hasilnya dihitung sebagai berikut:"

"Jika bit pertama dari kedua angka adalah 1, maka bit pertama hasilnya adalah 1."

"Jika bit kedua dari kedua angka adalah 1, maka bit kedua hasilnya adalah 1. Begitu seterusnya."

"Apakah itu benar untuk semua operator bitwise?"

"Jauh lebih sederhana dari itu. Sedikit hanya bisa memiliki dua nilai, 0 dan 1, kan?"

"Benar."

"Kalau begitu pikirkan 1 sebagai benar, dan 0 sebagai salah. Operasi pada masing-masing bit akan hampir identik dengan operasi logis:"

Ekspresi logis Ekspresi bitwise
benar && benar == benar 1&1 == 1
benar && salah == salah 1&0 == 0
benar || benar == benar 1|1 == 1
benar || salah == benar 1|0 == 1
salah || salah = salah 0|0 == 0
!false == benar ~0 == 1
!benar == salah ~1 == 0

"Oh! Itu sangat mudah."

"Ya, jangan lupa bahwa operasi bitwise menggunakan bit yang sesuai dari dua angka."

"Ya, saya ingat: bit pertama dari satu angka dipasangkan dengan bit pertama dari angka kedua, dan hasilnya juga ditulis ke bit pertama. Dan hal yang sama berlaku untuk bit lainnya."

"Benar. Apakah Anda punya pertanyaan lain?"

"Ada apa dengan XOR dan 'eksklusif atau'?"

"Ini sangat mudah: ketika nilainya berbeda, itu benar; ketika sama, itu salah."

Ekspresi logis Ekspresi bitwise
benar XOR benar == salah 1 ^ 1 == 0
salah XOR salah == salah 0 ^ 0 == 0
benar XOR salah == benar 1 ^ 0 == 1
salah XOR benar == benar 0 ^ 1 == 1

Berikut beberapa contoh operasi bitwise:

Contoh Angka sebagai bit Hasil sebagai bit Hasil
5 & 3 0000010 1  & 0000001 1 0000000 1 1
7 & 2 000001 1 1 & 000000 1 0 00000010 2
5 | 9 00000 1 0 1  | 0000 1 00 1 00001101 13
5 ^ 9 00000 101  ^ 00001001 0000 1100 12
~9 ~ 00001001 11110110 246

"Terima kasih, Bilaabo. Sekarang aku tahu."

"Ada satu lagi grup operator bitwise, operator shift:"

5) " Operator shift "

Simbol Contoh Nama Deskripsi (apa fungsinya)
>> a >> b pergeseran kanan Menggeser bit angka a ke kanan sebanyak b digit.
<< c << d pergeseran kiri Menggeser bit bilangan c ke kiri sebanyak d digit.
>>> a >>> 2 pergeseran kanan tanpa tanda tangan Menggeser bit angka a ke kanan sebanyak 2 digit.

"Sihir jalanan macam apa ini?"

"Sebenarnya semuanya sangat sederhana. Coba lihat:"

Contoh Angka sebagai bit Hasil sebagai bit Hasil
10 >> 1 0000 101 0 >> 1 00000 101 5
10 >> 2 0000 101 0 >> 2 000000 10 2
10 << 1 0000 101 0 << 1 000 101 00 20
10 << 2 0000 101 0 << 2 00 101 000 40

"Menggeser bit angka ke kiri dengan 1 sama dengan mengalikan angka dengan 2. Menggeser dua digit setara dengan perkalian dengan 4, dengan tiga digit - perkalian dengan 8, dan seterusnya."

"Menggeser ke kanan sama dengan membagi dengan 2, 4, 8, 16, dst."

"Tapi apa perbedaan antara operator >>> dan >>?"

"Mereka berbeda saat bekerja dengan angka negatif. Ini karena  angka bertanda menggunakan bit paling kiri untuk menunjukkan tanda. Akibatnya, angka negatif berhenti menjadi negatif saat bergeser ke kanan. Jadi, mereka menghasilkan dua operator berbeda. Coba lihat:"

Ekspresi Hasil Keterangan
1 000 1010 >> 1 11 000 101 Angka negatif tetap negatif.
Untuk angka negatif, bit yang masuk diisi dengan 1s.
1 000 1010 >> 2 111 000 10
1 000 1010 >> 3 1111 000 1
1 000 1010 >>> 1 01 000 101 Angka negatif tidak lagi negatif. Untuk angka negatif, bit yang masuk diisi dengan 0s.
1 000 1010 >>> 2 001 000 10
1 000 1010 >>> 3 0001 000 1

"Pergeserannya bukan siklik. Bit yang bergerak di luar tepi kiri atau kanan angka akan dibuang begitu saja."

6) " Operator penugasan "

"Aku sudah tahu apa itu tugas. Tapi kenapa disebut 'operator'?"

"Karena ada beberapa dari mereka ☺"

Operator Apa artinya
a += b; 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; a = a & b;

"Saya pikir Anda mengerti logikanya."

7) " Operator kenaikan dan penurunan "

Notasi Contoh Keterangan
++ a++;
++b;
Menambah angka sebanyak 1.
-- d--;
--i;
Mengurangi angka atau variabel sebanyak 1.

"Apakah ada perbedaan antara menempatkan dua tanda minus sebelum atau sesudah variabel?"

"Ya, ada, meski tidak terlalu besar. Jika variabel dengan salah satu operator ini adalah bagian dari ekspresi atau tugas, maka ada perbedaan. Saya lebih suka menunjukkannya dengan contoh:"

Contoh Apa yang sebenarnya terjadi Keterangan
int a = 3;
int b = ++a;
int a = 3;
a = a + 1;
int b = a;
a pertama kali ditambah 1, lalu digunakan dalam ekspresi.
int a = 3;
int b = a++;
int a = 3;
int b = a;
a = a + 1;
a pertama kali digunakan dalam ekspresi, lalu bertambah 1.
int a = 3;
return a++;
int a = 3;
int result = a;
a = a + 1;
return result;
Fungsi akan mengembalikan 3, tetapi nilai a akan bertambah 1.
int x = 5;
x = ++x + ++x;
int x = 5;
int a = x + 1;// The first term is 6
x = a;
int b = x + 1;// The second term is 7
x = b;
x = a + b;
Hasilnya adalah 13. Pertama, x akan bertambah 1, dan nilai ini akan menggantikan suku pertama, lalu x akan bertambah 1 lagi.

"Wah! Itu keren!"

"Aku senang kamu menyukainya. Tapi, jika tidak ada ekspresi atau tugas, maka tidak ada perbedaan:"

"x++ setara dengan x = x + 1."

"++x setara dengan x = x + 1."

"Saya akan mengingatnya. Terima kasih, Bilaabo."

8)  " Operator ternary "

"Operator ini tidak hanya menggunakan satu atau dua variabel atau ekspresi. Ini menggunakan tiga variabel atau ekspresi sekaligus:"

Notasi Kode yang setara:
a ? b : c; if (a)
b
else
c
int min = a < b ? a : b; if (a < b)
min = a;
else
min = b;
return a != null ? a.length : 0; if (a != null)
return a.length;
else
return 0;

"Yah, itu sangat nyaman."

"Ya. Dan ringkas dan kodenya dapat dibaca. Selamat menggunakannya!"

9) " Lainnya "

"Tidak peduli seberapa terorganisir koleksi musik Anda, Anda tetap harus membuat folder "Miscellaneous"."

"Ya, siapa pun yang pernah mengkategorikan musik akan sangat setuju."

"Jadi, ada tiga operator lagi yang ingin saya ceritakan:"

Notasi Contoh Keterangan
() (a + b) * c Tanda kurung meningkatkan prioritas operator.
Hal-hal dalam tanda kurung dieksekusi terlebih dahulu.
[] c [i] = c [i + 1]; Dapatkan elemen array berdasarkan indeks.
. int n = a.length; " operator dot " mengakses variabel dan metode objek.

"Dan, terakhir, inilah tabel yang merangkum prioritas operator:"

Operator Contoh
Prioritas tertinggi (operator dieksekusi sesuai dengan urutan mereka dalam tabel ini)
()
[]
.
(a + b)
c [i] = c [i] + 1
++
--
~
!
+
-
i++; ++i;
--j; a--;
~c
!f
return +a;
return -a;
*
/
%
a * b
c / d
a % b
+
-
a + b
c - d
String s = "count"+"35";
>>
<<
>>>
a >> 3
b << 2
c >>> 3
<
<=
>
>=
a < b
a <= b
c > b
c >= b
==
!=
a == 3
a != 0
& a & 7
^ a ^ b
| a | b
&& (a < b) && (a < c)
|| (b != 0) || (c != 0)
? : = a > 0 ? a : -a;
=
*=, /=, %=
-=, +=
<<=. >>=, >>>=
&=, ^=. |=
Prioritas terendah (dilakukan terakhir)