Schauen wir uns zuerst den Code an
öffentliche Klasse IntegerDemo {public static void main (String [] args) {String num = null; System.out.println (integer.parseInt (num)); // exception java.lang.numberformatexception system.out.println (Integer.ValueOf (num)); // Exception Java.lang.Numberformatexception System.out.println (Sting.ValueOf (num)); // Ausgabe null num = ""; System.out.println (Integer.ParseInt (num)); // Ausnahme java.lang.numberformatexception System.out.println (Integer.ValueOf (num)); // Ausnahme java.lang.numberformatexception system.out.println (string.Valueof (num)); // leere Zeichenfolge, nichts wird ausgegeben}}Schauen wir uns an, wie String.valueof () geschrieben ist
String.ValueOf () kann bei der Begegnung mit Null und leeren Zeichenfolgen normal ausgeben, sodass keine Fehler geworfen werden.
Schauen wir uns an, wie die Ganzzahltyp -Verpackung behandelt wird
In beiden Methoden soll ParseInt (s, 10) die Zeichenfolge S in einen Dezimal-Int-Basistyp umwandeln, aber ValueOf () wird aus dem internen Cache von [-127, 127] gemäß dem int-Bereich (unter Verwendung des Entitätsmodus im Entwurfsmodus) abgerufen (im Entitätsmodus).
Werfen wir einen Blick auf Parseint (s, 10). In der Methode werden wir beurteilen, ob die Zeichenfolge eine rechtliche Nummer ist, und wir werden andere Formate wie Null, leere Zeichenfolge usw. überprüfen, damit wir einen Fehler werfen werden
public static int parsesint (String s, int radix) löst NumberFormatexception { / * * WARNUNG aus: Diese Methode kann während der VM -Initialisierung frühzeitig aufgerufen werden, bevor IntegerCache initialisiert wird. Es muss darauf geachtet werden, dass die Wertmethode nicht verwendet wird. */ if (s == null) {throw New numberFormatexception ("null"); } if (radix <charakter.min_radix) {neue numberformatexception ("radix" + radix + "weniger als charakter.min_radix"); } if (radix> charakter.max_radix) {neue numberformatexception ("radix" + radix + "größer als charakter.max_radix"); } int result = 0; boolean negativ = falsch; int i = 0, len = sength (); int limit = -integer.max_value; int multmin; Int Ziffer; if (len> 0) {char firstChar = S. charat (0); if (FirstChar <'0') {// Mögliches Leading "+" oder "-" if (firstchar == '-') {negativ = true; limit = Integer.min_Value; } else if (FirstChar! if (len == 1) // kann nicht einsam "+" oder "-" throw numberformatexception.forinputstring (s); i ++; } multmin = limit / radix; while (i <len) {// Ansammlung negativ überrascht, dass Überraschungen in der Nähe von max_value digit = charakter.Digit (S. charat (i ++), Radix); if (digit <0) {throw numberFormatexception.forinputstring (s); } if (result <multmin) {throw numberFormatexception.forinputstring (s); } Ergebnis *= Radix; if (result <limit + digit) {throw numberFormatexception.forinputstring (s); } result -= digit; }} else {throw numberFormatexception.forinputstring (s); } negativ zurückgeben? Ergebnis: -Result; }Zusammenfassen
Das obige ist die Differenz- und Ergebnis -Code -Analyse von Integer.Valueof, paretint () String.Valueof in Java, die Ihnen vom Editor vorgestellt wurden. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!