Secara takrifan, operator unari ialah operator yang memerlukan tepat satu operan, atau pembolehubah, untuk
fungsi.Mereka sering melakukan tugas mudah, seperti meningkatkan
pembolehubah berangka dengan satu, atau menafikan nilai boolean.
Operator Pelengkap dan Penafian Logik
Operator pelengkap logik, !, menterbalikkan nilai ungkapan boolean. Contohnya,
jika nilai adalah benar, ia akan ditukar kepada palsu, dan sebaliknya. Untuk menggambarkan ini, bandingkan
keluaran penyataan berikut:
boolean x = false; System.out.println(x); // false x = !x; System.out.println(x); // true
Begitu juga, operator penolakan, -, membalikkan tanda ungkapan angka, seperti yang ditunjukkan
dalam kenyataan ini:
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
Berdasarkan huraian, mungkin jelas bahawa sesetengah pengendali memerlukan pembolehubah
atau ungkapan yang mereka bertindak berdasarkan jenis tertentu. Contohnya, anda tidak boleh memohon
pengendali penolakan, -, kepada ungkapan boolean, anda juga tidak boleh menggunakan pelengkap logik
operator, !, kepada ungkapan angka. Berhati-hati dengan soalan pada peperiksaan yang cuba melakukan ini,
kerana ia akan menyebabkan kod gagal untuk disusun. Contohnya, tiada satu pun daripada baris kod berikut
akan menyusun:
int x = !5; // DOES NOT COMPILE boolean y = -true; // DOES NOT COMPILE boolean z = !0; // DOES NOT COMPILE
Pernyataan pertama tidak akan disusun kerana fakta bahawa di Java anda tidak boleh melakukan
penyongsangan logik bagi nilai berangka. Pernyataan kedua tidak menyusun kerana anda
tidak boleh menafikan nilai boolean secara numerik; anda perlu menggunakan operator songsang logik.
Akhir sekali, pernyataan terakhir tidak dikompilkan kerana anda tidak boleh mengambil pelengkap logik nilai berangka, dan anda juga tidak boleh menetapkan integer kepada pembolehubah boolean.
dalam Java 1 dan true tidak berkaitan dalam
dalam apa jua cara, sama seperti 0 dan palsu tidak berkaitan.Operator Kenaikan dan Penurunan
Operator kenaikan dan pengurangan, dan --, masing-masing, boleh digunakan pada angka
operan dan mempunyai susunan atau keutamaan yang lebih tinggi, berbanding dengan pengendali binari. Dalam
erti kata lain, mereka sering digunakan terlebih dahulu pada ungkapan.
Pengendali kenaikan dan pengurangan memerlukan penjagaan khas kerana tertibnya
digunakan pada operan yang berkaitan boleh membuat perbezaan dalam cara ungkapan diproses. Jika operator diletakkan sebelum operan, dirujuk sebagai operator pra-kenaikan dan operator pra-penurunan, maka operator digunakan dahulu dan nilai kembali
ialah nilai baharu bagi ungkapan tersebut. Sebagai alternatif, jika operator diletakkan selepas operan,
dirujuk sebagai pengendali selepas kenaikan dan pengendali pasca pengurangan, maka nilai asal ungkapan dikembalikan, dengan pengendali digunakan selepas nilai dikembalikan.
Berikut ialah contoh ilustrasi:
boolean x = false; System.out.println(x); // false x = !x; System.out.println(x); // true
Pengendali pra-kenaikan pertama mengemas kini nilai untuk pembilang dan mengeluarkan yang baharu
nilai 1. Operator pasca pengurangan seterusnya juga mengemas kini nilai pembilang tetapi output
nilai sebelum penyusutan berlaku.
Satu amalan biasa dalam peperiksaan pensijilan, walaupun kurang biasa di dunia nyata, ialah
gunakan berbilang operator kenaikan atau pengurangan pada satu pembolehubah pada baris yang sama:
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
Yang ini lebih rumit daripada contoh sebelumnya kerana x diubah suai tiga
kali pada baris yang sama. Setiap kali ia diubah suai, apabila ungkapan bergerak dari kiri ke kanan,
nilai x berubah, dengan nilai yang berbeza diberikan kepada pembolehubah. Seperti yang anda akan ingat
daripada perbincangan kami tentang keutamaan pengendali, susunan operasi memainkan peranan penting dalam
menilai contoh ini.
Jadi bagaimana anda membaca kod ini? Pertama, x ditambah dan dikembalikan kepada ungkapan,
yang didarab dengan 5. Kita boleh permudahkan ini:
int x = !5; // DOES NOT COMPILE boolean y = -true; // DOES NOT COMPILE boolean z = !0; // DOES NOT COMPILE
Seterusnya, x dikurangkan, tetapi nilai asal 4 digunakan dalam ungkapan, membawa kepada
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
Penugasan akhir x mengurangkan nilai kepada 2 dan memandangkan ini ialah operator pra-kenaikan, nilai itu dikembalikan kepada ungkapan:
int x = 3; int y = ++x * 5 / x-- + --x; System.out.println("x is " + x); System.out.println("y is " + y);
Akhir sekali, kami menilai gandaan dan pembahagian dari kiri ke kanan, dan selesai dengan penambahan. Hasilnya kemudian dicetak:
int y = 4 * 5 / x-- + --x; // x assigned value of 4
Untuk membuat kesimpulan, operator unari memudahkan dan memperkemas kod dengan mendayakan operasi operan tunggal yang pantas seperti menambah, menafikan atau menyongsangkan nilai. Ia penting untuk logik yang cekap, ungkapan padat dan kawalan ringkas ke atas data, meningkatkan kebolehbacaan dan kefungsian dalam pengaturcaraan.
Atas ialah kandungan terperinci Bekerja dengan Operator Unary. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!