Fast alle Betreiber können nur mit "Primitiven" arbeiten. Ausnahmen sind "=", "," == "und"! = ", Die alle Objekte bedienen. Zusätzlich unterstützt die String -Klasse "+" und "+=".
Der Basistyp speichert den tatsächlichen numerischen Wert. Anstatt sich auf ein Objekt zu beziehen. Wenn Sie also Werte zuweisen, wird der Inhalt eines Ortes direkt an einen anderen Ort kopiert. Wenn beispielsweise A = B für den Basistyp verwendet wird, wird der Inhalt von B in A kopiert. Wenn A geändert wird, wird B überhaupt nicht von dieser Änderung beeinflusst. (In der vorherigen Java -Programmierungsidee (2) wissen wir, dass der Basistyp im Stapel gespeichert ist. Angenommen, A = 4, wird ein Raum geöffnet, um den Wert 4 zu schaffen. es wird sich nicht auswirken B)
Wenn sich jedoch "Werte" einem Objekt zuweisen, ändert sich die Situation. Zunächst wissen wir, dass das, worauf wir beim Betrieb eines Objekts wirklich arbeiten, ein Hinweis auf das Objekt ist. Wenn "ein Objekt einem anderen Objekt zugewiesen" wird, kopiert es tatsächlich die "Referenz" von einem Ort zum anderen. Dies bedeutet, dass C und D sowohl auf das Objekt, auf das ursprünglich nur durch D (beide Fernbedienungen (Referenzen)) betrieben und ein TV -Set (Objekt) gedrückt werden können).
Priorität:
| Priorität | Bindung | |
1 | Suffix -Operator | []. () (Funktionsaufruf) | Von links nach rechts |
2 | Monologischer Betreiber | ! ~ ++ - +(einzelner Operand) (einzelner Operand) | Von rechts nach links |
3 | erstellen | neu | Von links nach rechts |
4 | Multiplikation und Abteilung | */ % | Von links nach rechts |
5 | Addition und Subtraktion | + - | Von links nach rechts |
6 | Schicht | << >> >>>> | Von links nach rechts |
7 | Beziehung | <= >> = Instanzof | Von links nach rechts |
8 | gleich | ==! = | Von links nach rechts |
9 | bitweise und | & | Von links nach rechts |
10 | bitweise xor | ^ | Von links nach rechts |
11 | bitweise oder | | | Von links nach rechts |
12 | Logik und | && | Von links nach rechts |
13 | Logisch oder | || | Von links nach rechts |
14 | Zustand | ? : | Von rechts nach links |
15 | Abtretung | = += -= *= /= %= ^= << = >> = >>> = = | Von rechts nach links |
(1) Zuordnung
Der Haupttyp verwendet "a = b", und der Inhalt bei B wird auf A kopiert, wenn a geändert wird, dann wird B überhaupt nicht von der Modifikation beeinflusst.
Die Situation ändert sich, wenn das Objekt "zugewiesen" ist. Wenn wir ein Objekt betreiben, arbeiten wir wirklich sein Griff. Wenn Sie also einen Wert von einem Objekt an ein anderes zuweisen, kopiert er den Griff von einem Ort zum anderen. Dies bedeutet, dass C und D irgendwann auf das Objekt verweist, auf das nur d nur d nur d zeigt.
kurz S1 = 1; S1 = S1 + 1; (Das Ergebnis des S1+1 -Betriebs ist int -Typ, und ein Gusstyp ist erforderlich)
kurz S1 = 1; S1 += 1; (kann korrekt kompiliert werden) += Operator ohne Typumwandlungsproblem
(2) Arithmetikoperator
Die arithmetischen Operatoren von Java: plus Zeichen (+), minus Zeichen (-), Divisionszeichen (/), Multiplikationszeichen (*) und Modul (%erhalten den Rest von der Ganzzahlabteilung). Integer Division wird die Dezimalstellen direkt abschneiden, anstatt zu tragen.
(3) Automatische Erhöhung und Abnahme
Für die Vorinkrement und die Vorinkrement (z. B. ++ A oder-A) wird der Vorgang zuerst durchgeführt und der Wert wird generiert.
Für die Nachnahme und nach der Inkremente nach der Inkremente (z. B. A ++ oder A--) wird der Wert generiert und der Vorgang wird durchgeführt.
(4) Relational Operator
Relationale Operatoren umfassen <,>, <=,> =, =,! =
Gleich und nicht gleich, um für alle integrierten Datentypen zu gelten, aber andere Vergleiche gelten nicht für Boolesche Typen.
Um zu vergleichen, ob der tatsächliche Inhalt der beiden Objekte gleich ist, müssen Sie die spezielle Methode gleich () verwenden, die für alle Objekte gilt.
Die Equals () -Methode gilt nicht für "Haupttypen". Diese Typen können direkt mit == und! = Verwendet werden.
Der Standard von Equals () ist der Vergleichsgriff. Wenn Sie also in Ihrer neuen Klasse gleich () in Ihrer neuen Klasse ändern, ist es unmöglich, das gewünschte Verhalten zu zeigen
Die meisten Java -Klassenbibliotheken implementieren Equals (), so dass sie tatsächlich den Inhalt von Objekten und nicht deren Handles vergleicht.
= = und! = Vergleicht das Objektgriff, nicht den tatsächlichen Inhalt des Objekts
(5) Logischer Operator
Logische Operatoren &&, || ,! kann einen Booleschen Wert erzeugen
& und && können als logische Operatoren verwendet werden "und", aber && "Kurzschluss und". Bei der Berechnung wird der Wert des Ausdrucks vor dem Symbol zum ersten Mal beurteilt. Wenn der Wert des gesamten Ausdrucks bestimmt werden kann, wird die Operation des Ausdrucks nach dem Symbol nicht durchgeführt.
Zusätzlich und kann als Bitoperator verwendet werden
(6) Bitgewise -Operator
Bitweise und Operator (&)
Bitweise oder Operator (|)
bitweise xor (^, xor)
Bitweise nicht (~, auch als "Non" -Operator bezeichnet) gehört zu einem unären Operator und erzeugt einen Wert gegenüber dem Eingangsbit.
(7) Schaltoperator
Der linke Schaltoperator (<<) kann das Betriebsobjekt nach links auf die Anzahl der rechts vom Bediener angegebenen Bits verschieben (Komplement 0 am niedrigen Bit).
Der signierte Rechtschaltoperator (>>) bewegt das Betriebsobjekt nach rechts die Anzahl der rechts vom Bediener angegebenen Bits. Der signierte rechte Schaltoperator verwendet eine Vorzeichenverlängerung: Wenn der Wert positiv ist, wird 0 an der hohen Position eingefügt; Wenn der Wert negativ ist, wird 1 an der hohen Position eingefügt
Unsigned Right Shift Operator (>>>), der "Zero -Erweiterung" verwendet: 0 an hoher Position einfügen, unabhängig von positiv oder negativ
(8) Triple If-ELSE-Operator
Boolescher Ausdruck? Wert 0: Wert 1 Das Ergebnis des "boleschen Ausdrucks" ist wahr, und "Wert 0" wird berechnet, ansonsten "Wert 1" wird berechnet
(9) String -Operator +
int x = 0, y = 1, z = 2; system.out.println ("out:" + x + y + z);Hier konvertiert Java Compiler X, Y und Z in ihre Stringform, anstatt sie zuerst zusammen hinzuzufügen
Wenn der Ausdruck "String +" verwendet wird, werden alle nachfolgenden Betriebsobjekte in eine Zeichenfolge konvertiert.
Stellen Sie sicher, dass das erste Element eine Zeichenfolge ist
(10) Modellierungsbetreiber (Guss)
Für Operationen wie "Verengung der Konvertierung" (Datentypen, die mehr Informationen berücksichtigen und sie in kleinere Typen wie int zu kurz umwandeln können) können Sie dem Risiko eines Informationsverlusts konfrontiert. Zu diesem Zeitpunkt zwingt uns der Compiler, klare Formen herzustellen
Für die "Verbreiterung der Konvertierung" muss nicht explizit geformt werden, da der neue Typ definitiv die ursprüngliche Art von Informationen berücksichtigen kann und keinen Informationsverlust verursacht
Boolesche Werte (Boller) erlauben überhaupt keine Styling -Verarbeitung, und andere Haupttypen können zusammengeformt werden.
Nachdem der Float oder den Doppelwert in einen Ganzzahlwert gestaltet wird, ist der Dezimalteil immer "abgeschnitten", ohne dass ein Tragen ist.
Wie viel ist Math.Round (11.5) gleich? Wie viel ist Math.Round (-11.5) gleich?
Math.round(11.5)==12 Math.round(-11.5)==-11
Die runde Methode gibt die lange ganze Zahl zurück, die dem Parameter am nächsten liegt. Finden Sie nach dem Hinzufügen von 1/2 zum Parameter seinen Boden.
Zusammenfassen
In dem oben genannten Artikel geht es um diesen Artikel, in dem Java -Betreiber und deren Prioritäten erörtert werden, und ich hoffe, dass dies für alle hilfreich sein wird. Interessierte Freunde können weiterhin auf diese Seite verweisen:
Multimode -String -Matching -Algorithmus -Prinzip und Java -Implementierungscode
Detaillierte Erläuterung der Verwendung von Rxjava -Funktionsbetreibern
Eine kurze Diskussion über die Konvertierung zwischen String -Arrays, Saiten und Formen in Java
Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!