Operator unary di Jawa

OTUS meluncurkan program persiapan sertifikasi profesional baru untuk Oracle Java Programmer (OCAJP) besok . Kami mengundang Anda untuk menonton rekaman pelajaran Demo gratis "Jenis Data Java: Pengenal dan Primitif" dan kami terus menerbitkan serangkaian artikel oleh Vladislav Rodin - kepala tim pengembangan, guru di MIPT dan foxminded.





pengantar



Sertifikasi OCA (Oracle Certified Associate Java SE8 Programmer) menawarkan serangkaian tugas unik yang menguji pemahaman mendalam tentang bahasa pemrograman Java. Seluruh blok dikhususkan untuk ekspresi, loop, dan operator. Kami akan membicarakan yang terakhir hari ini.



Prioritas operator



Operator menerima argumen sebagai masukan dan mengembalikan beberapa nilai. Ada operator unary, binary, dan ternary. Misalnya ,! False adalah unary, a + b adalah binary, dan? : - adalah satu-satunya operator yang membutuhkan tiga argumen.



Hal pertama yang harus diingat adalah prioritas operator:



  1. Operator pasca-unary: pengecualian ++ dan pengecualian--
  2. Operator pra-unary: ++ pengecualian dan --exception
  3. Operator unary lainnya: +, - ,!
  4. Perkalian, pembagian, mengambil sisanya: *, /,%
  5. Penjumlahan dan Pengurangan: +, -
  6. Operator pergeseran bit: <<, >>, >>>
  7. Operator perbandingan: <,>, <=,> =, instanceof
  8. Operator persamaan-ketidaksetaraan: == ,! =
  9. Operator logika: &, |, ^
  10. Operator logika hubung singkat: &&, ||
  11. Operator terner: ekspresi boolean? expression1: expression

    sion2
  12. Operator penugasan: =, + =, - =, * =, / =,% =, & =, ^ = ,! =, << =, >> =, >>> =


Bekerja dengan operator unary



Kami berbicara tentang operator biner terakhir kali. Hari ini kita akan membahas operator unary yang mengikuti dari judul artikelnya. Pada ujian, mereka mungkin menawarkan ekspresi yang cukup kompleks untuk perhitungan yang perlu Anda ingat urutan pelaksanaannya.



Masuk perubahan dan operator inversi logis



Operator invers logis ! berlaku hanya untuk variabel berjenis boolean dan mengubah nilai dari benar menjadi salah dan sebaliknya. Misalnya:



boolean x = false;
System.out.println(x); // false
x = !x;
System.out.println(x); // true


Operator perubahan tanda - Berlaku hanya untuk angka dan tanda terbalik:



double x = 1.21;
System.out.println(x); // 1.21
x = -x;
System.out.println(x); // -1.21
x = -x;
System.out.println(x); // 1.21


Java, berbeda dengan C yang sama, secara jelas memisahkan tipe data integer dan boolean, dan oleh karena itu penggunaan operator perubahan tanda ke boolean atau penggunaan operator inversi logis menyebabkan kesalahan kompilasi:



int x = !5; // DOES NOT COMPILE
boolean y = -true; // DOES NOT COMPILE
boolean z = !0; // DOES NOT COMPILE


Operator increment dan decrement



Peningkatan ++ dan pengurangan operator yang diterapkan untuk variabel integer dan memiliki dua variasi: pasca-kenaikan (penurunan) dan pra-increment (pengurangan), dalam kode i ++ (aku--) dan ++ i (-Saya), masing-masing. Perbedaan antara variasi adalah bahwa ++ i menambah variabel dan mengembalikan nilai baru, sedangkan i ++ mengembalikan nilai lama dan hanya kemudian menambahkan variabel. Perbedaannya dapat dilihat lebih jelas pada potongan kode ini:



int counter = 0;
System.out.println(counter); // Outputs 0
System.out.println(++counter); // Outputs 1
System.out.println(counter); // Outputs 1
System.out.println(counter--); // Outputs 1
System.out.println(counter); // Outputs 0


Dalam ujian, berbagai tugas rumit dapat ditawarkan, di mana operator seperti gerobak dan gerobak kecil. Misalnya, tugas seperti itu mungkin ditawarkan.



Apa yang akan ditampilkan sebagai hasil dari program ini?

int x = 3;
int y = ++x * 5 / x-- + --x;
System.out.println("x is " + x);
System.out.println("y is " + y);


Masalahnya adalah x berubah beberapa kali pada baris yang sama.



Untuk mengatasi masalah tersebut, Anda dapat mengurai ekspresi dari kiri ke kanan, menggantikan ekspresi yang dikembalikan operator, dan secara terpisah memperbaiki nilai variabel yang diubah. Misalnya seperti ini:



int y = 4 * 5 / x-- + --x; // x assigned value of 4
int y = 4 * 5 / 4 + --x; // x assigned value of 3
int y = 4 * 5 / 4 + 2; // x assigned value of 2


Seperti yang Anda lihat, semua aturan di atas untuk menerapkan operator berlaku. Hasilnya adalah sebagai berikut:



x is 2
y is 7


Baca lebih banyak








All Articles