Hampir semua operator hanya dapat beroperasi pada "primitif". Pengecualian adalah "=", "==" dan "! =", Yang mengoperasikan semua objek. Selain itu, kelas string mendukung "+" dan "+=".
Jenis dasar menyimpan nilai numerik aktual. Alih -alih mengacu pada suatu objek. Jadi saat menetapkan nilai untuk itu, konten dari satu tempat secara langsung disalin ke tempat lain. Misalnya, jika a = b digunakan untuk tipe data dasar, maka konten B disalin ke a. Jika A dimodifikasi, B tidak akan terpengaruh oleh modifikasi ini sama sekali. (Dalam ide pemrograman Java sebelumnya (2), kita tahu bahwa tipe dasar disimpan dalam tumpukan. Dengan asumsi a = 4, jika tidak ada 4 di tumpukan, ruang akan dibuka untuk membuat nilai 4. Setelah A = B, B juga menunjuk ke 4 di tumpukan. Pada saat ini, a sama dengan 5. Lalu 5 akan dicari lagi di dalam rendam. tidak akan mempengaruhi b)
Namun, ketika "menetapkan nilai" ke suatu objek, situasinya akan berubah. Pertama -tama, kita tahu bahwa apa yang benar -benar kita operasikan saat mengoperasikan objek adalah referensi ke objek. Jadi jika "menetapkan objek ke objek lain", itu sebenarnya menyalin "referensi" dari satu tempat ke tempat lain. Ini berarti bahwa jika C = D digunakan pada objek, baik C dan D akan menunjuk ke objek yang awalnya hanya ditunjuk oleh D (kedua kontrol jarak jauh (referensi) dapat beroperasi dan menekan satu set TV (objek)).
Prioritas:
| Prioritas | Ikatan | |
1 | Operator akhiran | []. () (Panggilan fungsi) | Dari kiri ke kanan |
2 | Operator monologis | Lai ~ ++ - +(operan tunggal) (operan tunggal) | Dari kanan ke kiri |
3 | membuat | baru | Dari kiri ke kanan |
4 | Penggandaan dan Divisi | */ % | Dari kiri ke kanan |
5 | Penambahan dan pengurangan | + - | Dari kiri ke kanan |
6 | Menggeser | << >> >>>> | Dari kiri ke kanan |
7 | hubungan | <<=>> = instanceof | Dari kiri ke kanan |
8 | setara | ==! = | Dari kiri ke kanan |
9 | bitwise dan | & | Dari kiri ke kanan |
10 | bitwise xor | ^ | Dari kiri ke kanan |
11 | bitwise atau | | | Dari kiri ke kanan |
12 | Logika dan | && | Dari kiri ke kanan |
13 | Logis atau | || | Dari kiri ke kanan |
14 | kondisi | ? : | Dari kanan ke kiri |
15 | Penugasan | = += -= *= /= %= ^= << = >> = >>> = | Dari kanan ke kiri |
(1) Penugasan
Jenis utama menggunakan "A = B", dan konten di B disalin ke A. Jika A dimodifikasi, maka B tidak akan terpengaruh oleh modifikasi sama sekali.
Situasi berubah ketika objek "ditugaskan". Saat mengoperasikan objek, apa yang benar -benar kami operasikan adalah pegangannya. Jadi, jika Anda menetapkan nilai dari satu objek ke objek lainnya, itu sebenarnya menyalin pegangan dari satu tempat ke tempat lain. Ini berarti bahwa jika "C = D" digunakan untuk objek, maka C dan D pada akhirnya akan menunjuk ke objek yang hanya D menunjuk ke tempat pertama.
S1 pendek = 1; S1 = S1 + 1; (Hasil operasi S1+1 adalah tipe int, dan tipe cast diperlukan)
S1 pendek = 1; S1 += 1; (dapat dikompilasi dengan benar) += operator tanpa masalah konversi jenis
(2) Operator Aritmatika
Operator aritmatika Java: plus tanda (+), tanda minus (-), tanda divisi (/), tanda multiplikasi (*) dan modulus (%, dapatkan sisanya dari divisi integer). Divisi Integer akan memotong desimal secara langsung, daripada membawa.
(3) kenaikan dan penurunan otomatis
Untuk pra-pendapatan dan pra-pendarahan (seperti ++ A OR --A), operasi akan dilakukan terlebih dahulu dan nilainya akan dihasilkan.
Untuk pasca-meningkat dan pasca-meningkat (seperti A ++ atau A--), nilainya akan dihasilkan dan operasi akan dilakukan.
(4) Operator Relasional
Operator relasional termasuk <,>, <=,> =, = =,! =
Sama dan tidak sama untuk diterapkan pada semua tipe data bawaan, tetapi perbandingan lain tidak berlaku untuk tipe boolean.
Untuk membandingkan apakah konten aktual dari dua objek adalah sama, Anda harus menggunakan metode khusus setara () yang berlaku untuk semua objek.
Metode Equals () tidak berlaku untuk "tipe utama". Jenis -jenis itu dapat digunakan secara langsung dengan == dan! =.
Default Equals () adalah pegangan perbandingan. Jadi kecuali Anda mengubah Equals () di kelas baru Anda, tidak mungkin menunjukkan perilaku yang kami inginkan
Sebagian besar perpustakaan kelas Java menerapkan Equals (), sehingga sebenarnya membandingkan konten objek daripada pegangannya.
= = dan! = membandingkan pegangan objek, bukan konten aktual dari objek
(5) Operator logis
Operator logis &&, ||,! dapat menghasilkan nilai boolean
& dan && dapat digunakan sebagai operator logis "dan", tetapi && adalah "sirkuit pendek dan". Saat menghitung, nilai ekspresi sebelum simbol pertama kali dinilai. Jika nilai seluruh ekspresi dapat ditentukan, pengoperasian ekspresi setelah simbol tidak dilakukan.
Selain itu, & dapat digunakan sebagai operator sedikit
(6) Operator Bitwise
Bitwise dan operator (&)
Bitwise atau operator (|)
bitwise xor (^, xor)
Bitwise not (~, juga disebut "non" operator) milik operator unary, menghasilkan nilai yang berlawanan dengan bit input.
(7) Operator Shift
Operator shift kiri (<<) dapat memindahkan objek operasi ke kiri ke jumlah bit yang ditentukan di sebelah kanan operator (komplemen 0 pada bit rendah).
Operator shift kanan yang ditandatangani (>>) menggerakkan objek operasi ke kanan jumlah bit yang ditentukan di sebelah kanan operator. Operator shift kanan yang ditandatangani menggunakan ekstensi tanda: jika nilainya positif, 0 dimasukkan pada posisi tinggi; Jika nilainya negatif, 1 dimasukkan pada posisi tinggi
Operator Pergeseran Kanan yang tidak ditandatangani (>>>), yang menggunakan "Ekstensi Zero": Masukkan 0 pada posisi tinggi terlepas dari positif atau negatif
(8) Operator IF-Else tiga kali lipat
Ekspresi Boolean? Nilai 0: Nilai 1 Hasil "Ekspresi Bolean" adalah benar, dan "nilai 0" dihitung, jika tidak, "Nilai 1" dihitung
(9) Operator String +
int x = 0, y = 1, z = 2; System.out.println ("out:" + x + y + z);Di sini, kompiler java mengonversi x, y, dan z menjadi bentuk string mereka alih -alih menambahkannya terlebih dahulu
Saat menggunakan "String +", jika ekspresi dimulai dengan string, maka semua objek operasi berikutnya akan dikonversi ke string.
Untuk menghubungkan string dengan tanda "plus" (menggunakan versi java sebelumnya), pastikan untuk memastikan elemen pertama adalah string
(10) Operator Pemodelan (CAST)
Untuk operasi seperti "Konversi Menyempit" (tipe data yang dapat mengakomodasi lebih banyak informasi dan mengubahnya menjadi tipe yang lebih kecil, seperti Int menjadi pendek), Anda mungkin menghadapi risiko kehilangan informasi. Pada titik ini, kompiler akan memaksa kita untuk membuat bentuk yang jelas
Untuk "pelebaran konversi", tidak perlu dibentuk secara eksplisit, karena tipe baru pasti dapat mengakomodasi jenis informasi asli dan tidak akan menyebabkan hilangnya informasi
Nilai boolean (boleans) tidak mengizinkan pemrosesan gaya sama sekali, dan jenis utama lainnya dapat dibentuk bersama.
Setelah membentuk float atau nilai ganda menjadi nilai integer, bagian desimal selalu "terputus" tanpa membawa.
Berapa banyak Math.round (11.5) sama? Berapa banyak Math.round (-11.5) sama?
Math.round(11.5)==12 Math.round(-11.5)==-11
Metode bundar mengembalikan bilangan bulat panjang yang paling dekat dengan parameter. Setelah menambahkan 1/2 ke parameter, temukan lantainya.
Meringkaskan
Di atas adalah semua tentang artikel ini yang membahas operator Java dan prioritas mereka, dan saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke situs ini:
Prinsip Algoritma Pencocokan String Multimode dan Kode Implementasi Java
Penjelasan terperinci tentang cara menggunakan operator fungsi rxJava
Diskusi singkat tentang konversi antara array string, string dan pembentukan di java
Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!