In Java kann häufig die Typumwandlung von der Definition von Variablen bis zum Kopieren, Berechnung numerischer Variablen bis hin zur Parameterübertragung von Methoden, Modellierung zwischen Basisklassen und abgeleiteten Klassen usw. auftreten. Typumwandlung ist überall zu sehen. Die Typ -Konvertierung in Java spielt eine wichtige Rolle bei der Java -Codierung.
Bei der Definition von Variablen gibt es viele Probleme. Wenn Sie nicht vorsichtig sind, verlieren Sie die Genauigkeit oder inkompatible Typen.
Zum Beispiel:
1. Beim Definieren von langen Ganzzahldaten muss das Suffix L oder L hinzugefügt werden.
Langes L = 123456789012345L
2. Bei der Definition eines einzelnen Präzisionstyps (7-8-Bit-signifikante Ziffer) muss das Suffix F oder f hinzugefügt werden.
float f = 12,5f
3. Der Boolesche Typ kann nicht in andere Datentypen konvertiert werden.
Unter ihnen stoßen wir häufig auf Datentyp -Konvertierungsprobleme. Die häufigsten sind implizite Umwandlung und Gussumwandlung. Lassen Sie es uns analysieren.
Implizite Konvertierung
Besonderheit:
Von klein bis groß, kann es implizit umgewandelt werden und der Datentyp wird automatisch verbessert.
Byte, kurz, char -> int -> lang -> float -> doppelt
Hinweis: Lang ist 8 Bytes und Float ist 4 Bytes.
Long ist eine Ganzzahl, Float ist ein schwimmender Punkttyp. Die Speicherregeln für Ganzzahlen und schwimmende Punktzahlen sind unterschiedlich. Denken Sie daran, dass der lange Bereich kleiner ist als Float.
Beispiel:
Byte A = 10;
int b = a;
Wenn intb = a kompiliert wird, wird a implizit in den Typ in INT konvertiert.
Fälle
Besonderheit:
Von groß nach klein (wenn Sie klar wissen, dass die Daten durch diesen Datentyp dargestellt werden können, können Sie Casting verwenden).
Format:
(Konvertierter Datentyp) Variable oder Wert.
Hinweis: Im Allgemeinen wird das Casting überhaupt nicht empfohlen.
Beispiel 1:
int a = 10; byte b = (byte) a;
Wenn Byte B = (Byte) a zusammengestellt wird, wird A zum Byte -Typ gegossen.
Beispiel 2:
Klasse Qiangzhidemo {public static void main (String [] args) {byte b = (byte) 130; System.out.println (b); // Drucken Ergebnis-126}}Analyse:
Daten 130 standardmäßig für Int -Typ -Dezimaldaten,
Schritt 1: Umwandeln Sie Dezimalzahlung 130 in Binärdaten.
10000010
Schritt 2: Die Darstellung von 130 im Speicher ist wie folgt
Originalcode: 0000000000000000000 00000000 10000010
Schritt 3: Finden Sie den Komplementcode von INT130
Da 130 eine positive Zahl ist, stimmen der inverse Code und der Komplementcode mit dem ursprünglichen Code überein.
Komplementcode: 000000000000000000000 0000000000000010
Schritt 4: Fangen Sie den Komplementcode ab und lassen Sie nur die letzten 8 Ziffern.
(Byte) Der Komplementcode der 130er Jahre ist: 10000010
Schritt 5: Umwandeln Sie diese Komplement in den ursprünglichen Code.
Da das Vorzeichenbit (erstes Bit) 1 ist, ist die Zahl eine negative Zahl.
Inverse Code: 10000001 (Komplementcode-1)
Ursprünglicher Code: 111111110 (Das Symbolbit bleibt unverändert, das Datenbit ist invertiert)
Konvertieren Sie in Decimal in -126, drucken Sie also endlich -126.
Beispiel 3:
Shorts = 1; s = s +1;
Und
Shorts = 1; S+= 1;
Gibt es ein Problem? Warum?
Analyse:
Das erste Programm meldet einen Fehler: Fehler: Inkompatibler Typ: Es kann Verluste bei der Konvertierung von int zu kurz geben
Ursache: S = S+1; S+1 wird implizit in den Typ in INT konvertiert. Wenn dem kurzen Typ ein INT -Typ zugeordnet ist, kann er verloren gehen.
Das zweite Programm kann zusammengestellt und ausgeführt werden.
Grund: S+= 1, obwohl es als S = S+1 angesehen werden kann, gibt es immer noch einen Unterschied. Es gibt einen Guss in S+= 1, dh s = (kurz) (s+1), die den Wert von s+1 auf einen kurzen Typ bringt, sodass es keinen Fehler gibt.
Zusammenfassung:
Wenn das Problem der Datentypkonvertierung in einigen Mini -Programmen auftritt, können wir möglicherweise auf einen Blick sehen. Wenn diese kleinen Probleme jedoch ein großes System schreiben und eine große Menge an Daten haben, können diese kleinen Probleme Systemfehler oder sogar Abstürze verursachen, sodass wir die strenge des frühen Code schreiben müssen.
Der obige Inhalt führt die implizite Conversion von Java Basic vs Cast ein. Ich hoffe, es gefällt Ihnen.