Συγκριτικό διάγραμμα
Βάση σύγκρισης | & & | && |
---|---|---|
Χειριστής | Πρόκειται για ένα "Bitwise Operator". | Είναι ένας "λογικός χειριστής". |
Εκτίμηση | Αξιολογεί την αριστερή και τη δεξιά πλευρά της έκφρασης. | Αξιολογεί μόνο την αριστερή πλευρά της έκφρασης. |
Λειτουργεί | Λειτουργεί με "Boolean datatype" καθώς λειτουργεί και με "bits". | Λειτουργεί μόνο σε "Boolean datatype". |
Χρήση | Χρησιμοποιήστε το για να ελέγξετε τη λογική κατάσταση και επίσης να χρησιμοποιήσετε για να αποκρύψετε ορισμένα bit όπως τα bits ισοτιμίας. | Χρησιμοποιείται μόνο για τον έλεγχο της λογικής κατάστασης. |
Ορισμός του & (Bitwise AND)
Αυτός ο χειριστής '&' χρησιμοποιείται τόσο ως λογικός χειριστής (&) όσο και ως δυαδικός χειριστής. Λειτουργεί τόσο στα boolean όσο και στα δυαδικά δεδομένα. Όταν ο & χειριστής χρησιμοποιείται ως λογικός & χειριστής, τότε το αποτέλεσμα είναι "αληθές" αν και η πλευρά της έκφρασης της αξιολόγησης είναι αληθής, αλλιώς επιστρέφει "ψευδής". Επιτρέπει στον μεταγλωττιστή να αξιολογήσει και την πλευρά της έκφρασης. Δηλαδή, ακόμα και αν η αριστερή πλευρά της έκφρασης είναι ψευδής, αξιολογεί τη δεξιά πλευρά της έκφρασης.
Μας επιτρέπει να το καταλάβουμε με ένα παράδειγμα.
int a = 4, b = 5, system.out.println ((a == 6) & (b ++ == 6)). system.out.println ("b =" + b). // output false b = 5
Εδώ, με την αξιολόγηση της αριστερής πλευράς της έκφρασης (a == 6), οδηγεί σε ψευδείς, ο χειριστής & τότε αξιολογεί τη δεξιά πλευρά της έκφρασης (b ++ == 6) ως αποτέλεσμα, την τιμή των β βημάτων.
Όταν το '&' χρησιμοποιείται ως "bitwise operator", πρώτα μετατρέπει και τους δύο τελεστές σε δυαδική μορφή και στη συνέχεια λειτουργεί πάνω σε αυτό χρησιμοποιώντας τον χειριστή & bit-by-bit. Μετά τη λειτουργία, το αποτέλεσμα που προκύπτει, είναι σε δυαδική μορφή, το οποίο μετά μετατρέπεται σε δεκαδικό. Οποιοδήποτε bit που είναι 0 σε οποιονδήποτε από τους τελεστές είναι 0. Εάν και τα δυο δυαδικά ψηφία των τελεστών είναι 1, τότε το προκύπτον bit είναι 1. Το Bitwise & Operator καθοδηγείται από τον ίδιο πίνακα αληθείας όπως και από τον λογικό & χειριστή του.
Ας δούμε τη λειτουργία bit & operator.
int a; α = 3 & 4. // 011 & 100 = 000 system.out.println ("a =" + a). // output a = 0
Εδώ, οι δεκαδικές τιμές 3 και 4 μετατρέπονται αρχικά στη δυαδική τους μορφή, και στη συνέχεια ο & bitwise χειριστής εκτελεί την λειτουργία & on them bit-by-bit. Το αποτέλεσμα που προκύπτει είναι σε δυαδική μορφή, το οποίο στη συνέχεια μετατρέπεται ξανά σε δεκαδική μορφή.
Ορισμός του && (βραχυκύκλωμα AND)
Αυτός ο χειριστής && λειτουργεί ως λογικός χειριστής. Λειτουργεί μόνο στον τύπο δεδομένων boolean. Ονομάζεται επίσης χειριστής βραχυκυκλώματος. Καθώς ελέγχει μόνο την αριστερή πλευρά της έκφρασης. Εάν η αριστερή πλευρά της έκφρασης έχει ως αποτέλεσμα την ύπαρξη ψευδούς, τότε δεν ενοχλεί την αξιολόγηση της δεξιάς πλευράς της έκφρασης.
Μας επιτρέπει να κατανοήσουμε το παράδειγμα του λειτουργού του &&.
int a = 4, b = 5, system.out.println ((a == 6) && (b ++ == 6)). system.out.println ("b =" + b). // output false b = 4
Εδώ, καθώς η συνθήκη (a == 6) είναι ψευδής, ο && δεν αξιολογεί την έκφραση (b ++ == 6) ως αποτέλεσμα, η τιμή του b δεν αυξάνει.
Βασικές διαφορές μεταξύ & & &&
- Ο χειριστής & είναι ένας λογικός και ένας bitwise χειριστής, καθώς λειτουργεί και στα δύο booleans καθώς και στα δυαδικά δεδομένα, ενώ ο && χειριστής είναι ένας λογικός χειριστής καθώς λειτουργεί μόνο σε έναν τύπο δεδομένων boolean.
- Ο χειριστής & & αξιολογεί και την πλευρά της έκφρασης για να πάρει το τελικό αποτέλεσμα, ενώ ο & ο χειριστής αξιολογεί μόνο την αριστερή πλευρά της έκφρασης και αν αποδειχθεί ψευδής δεν αξιολογεί ούτε τη δεξιά πλευρά της έκφρασης.
Σημείωση:
Κατά την αξιολόγηση του τύπου δεδομένων boolean, και οι δύο χειριστές είναι "true" μόνο αν και ο πράκτορας είναι αληθής, αλλιώς επιστρέφει "false".
Συμπέρασμα:
Ο χειριστής & και &&, και οι δύο χρησιμοποιούνται για την αξιολόγηση της κατάστασης boolean, ενώ ο χειριστής && χρησιμοποιείται επίσης για τη λειτουργία bit. Όταν απαιτείται να αξιολογήσουμε και την πλευρά της έκφρασης, ο χειριστής & χρησιμοποιείται διαφορετικά, μπορούμε να χρησιμοποιήσουμε τον && χειριστή.