Προτεραιότητα χειριστή Java

Η προτεραιότητα του χειριστή καθορίζει τη σειρά με την οποία αξιολογούνται οι τελεστές σε μια έκφραση.

Πριν ξεκινήσετε να διαβάζετε αυτό το άρθρο, θα πρέπει να έχετε μια βασική γνώση των Java Operators.

Τώρα, ρίξτε μια ματιά στην παρακάτω δήλωση:

 int myInt = 12 - 4 * 2;

Ποια θα είναι η αξία του myInt; Θα είναι (12 - 4)*2, δηλαδή 16; Ή θα είναι 12 - (4 * 2), δηλαδή 4,;

Όταν δύο χειριστές μοιράζονται έναν κοινό τελεστή, 4σε αυτήν την περίπτωση, ο χειριστής με την υψηλότερη προτεραιότητα λειτουργεί πρώτα.

Στην Java, η προτεραιότητα του *είναι υψηλότερο από αυτό της -. Ως εκ τούτου, ο πολλαπλασιασμός πραγματοποιείται πριν από την αφαίρεση και η τιμή του myInt θα είναι 4.

Πίνακας προτεραιότητας χειριστή

Ο παρακάτω πίνακας παραθέτει την προτεραιότητα των τελεστών στην Java. Όσο πιο ψηλά εμφανίζεται στον πίνακα, τόσο μεγαλύτερη είναι η προτεραιότητά του.

Προτεραιότητα χειριστή Java
Χειριστές Προβάδισμα
αύξηση και μείωση μετά την επιδιόρθωση ++ --
πρόθεμα αύξηση και μείωση και unary ++ -- + - ~ !
πολλαπλασιαστικός * / %
πρόσθετος + -
βάρδια << >> >>>
σχετικός < > <= >= instanceof
ισότητα == !=
bitwise ΚΑΙ &
bitwise αποκλειστικά OR ^
συμπεριλαμβανομένης της bitwise Ή |
λογικό AND &&
λογική Ή ||
τριαδικός ? :
ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ = += -= *= /= %=
&= ^= |= <<= >>= >>>=

Παράδειγμα: Προτεραιότητα χειριστή

 class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )

Έξοδος :

 2

Η προτεραιότητα χειριστή του προθέματος ++είναι υψηλότερη από εκείνη του -τελεστή αφαίρεσης. Ως εκ τούτου,

 αποτέλεσμα = a - ++ c - ++ b;

είναι ισοδύναμο με

 αποτέλεσμα = a - (++ c) - (++ b);

Όταν ασχολείστε με πολλούς τελεστές και τελεστές σε μία μόνο έκφραση, μπορείτε να χρησιμοποιήσετε παρενθέσεις όπως στο παραπάνω παράδειγμα για σαφήνεια. Η έκφραση μέσα στις παρενθέσεις αξιολογείται πρώτα.

Συνεργασία χειριστών στην Ιάβα

Εάν μια παράσταση έχει δύο τελεστές με παρόμοια προτεραιότητα, η έκφραση αξιολογείται σύμφωνα με τη συνάφειά της (είτε αριστερά προς δεξιά είτε δεξιά προς αριστερά). Ας πάρουμε ένα παράδειγμα.

 α = β = γ;

Εδώ, η τιμή του c αντιστοιχεί στη μεταβλητή b. Στη συνέχεια, η τιμή του b αντιστοιχεί στη μεταβλητή a. Γιατί; Είναι επειδή η συσχέτιση του = χειριστή είναι από δεξιά προς τα αριστερά.

Ο παρακάτω πίνακας δείχνει τη συσχέτιση των τελεστών Java μαζί με τη συνάφειά τους.

Προτεραιότητα και συσχέτιση χειριστή Java
Χειριστές Προβάδισμα Συνεργασία
αύξηση και μείωση μετά την επιδιόρθωση ++ -- από αριστερά προς τα δεξιά
πρόθεμα αύξηση και μείωση και unary ++ -- + - ~ ! δεξιά προς τα αριστερά
πολλαπλασιαστικός * / % από αριστερά προς τα δεξιά
πρόσθετος + - από αριστερά προς τα δεξιά
βάρδια << >> >>> από αριστερά προς τα δεξιά
σχετικός < > <= >= instanceof από αριστερά προς τα δεξιά
ισότητα == != από αριστερά προς τα δεξιά
bitwise ΚΑΙ & από αριστερά προς τα δεξιά
bitwise αποκλειστικά OR ^ από αριστερά προς τα δεξιά
συμπεριλαμβανομένης της bitwise Ή | από αριστερά προς τα δεξιά
λογικό AND && από αριστερά προς τα δεξιά
λογική Ή || από αριστερά προς τα δεξιά
τριαδικός ? : δεξιά προς τα αριστερά
ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ = += -= *= /= %=
&= ^= |= <<= >>= >>>=
δεξιά προς τα αριστερά

Δεν χρειάζεται να απομνημονεύσετε τα πάντα εδώ. Τις περισσότερες φορές, η προτεραιότητα και η συνάφεια των χειριστών έχει νόημα από μόνη της. Μπορείτε πάντα να επιστρέψετε σε αυτό το άρθρο για αναφορά όταν έχετε αμφιβολίες. Επίσης, μπορείτε να χρησιμοποιήσετε παρένθεση εάν πιστεύετε ότι καθιστά τον κώδικά σας πιο κατανοητό.

ενδιαφέροντα άρθρα...