Regardons d'abord le code
classe publique 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 (string.valueof (num)); // Sortie null num = ""; System.out.println (Integer.Parseint (NUM)); // Exception java.lang.numberformatexception System.out.println (Integer.ValueOf (num)); // exception java.lang.numberformatexception System.out.println (string.valueof (num)); // String vide, rien n'est sorti}}Jetons un coup d'œil à comment String.ValueOf () est écrit
String.valueof () peut sortir normalement lors de la rencontre des chaînes nulles et vides, donc aucune erreur n'est lancée.
Jetons un coup d'œil à la façon dont l'intégralité du type d'emballage est gérée
Dans les deux méthodes, ParseInt (S, 10) doit convertir la chaîne S en un type de base INT décimal, mais ValueOf () sera récupéré du cache interne de [-127, 127] selon la plage int (en utilisant le mode d'entité en mode conception)
Jetons un coup d'œil à Parseint (S, 10). Dans la méthode, nous jugerons si la chaîne est un numéro juridique, et nous vérifierons d'autres formats tels que null, chaîne vide, etc., nous allons donc lancer une erreur
public static int parseInt (String s, int radix) lève NumberFormatexception {/ * * Avertissement: cette méthode peut être invoquée tôt lors de l'initialisation de la machine virtuelle * avant que IntegerCache ne soit initialisé. Il faut prendre soin de ne pas utiliser * la valeur de la méthode. * / if (s == null) {lancez new numberformatexception ("null"); } if (radix <caractères.min_radix) {Throw New NumberFormatexception ("Radix" + Radix + "moins que caractères.min_radix"); } if (radix> caractères.max_radix) {lancez new numberformatexception ("radix" + radix + "supérieur à caractères.max_radix"); } int résultat = 0; booléen négatif = false; int i = 0, len = s.length (); int limit = -Integer.max_value; int mulmin; Int Digit; if (len> 0) {char firstchar = s.charat (0); if (firstchar <'0') {// Possible dirigeant "+" ou "-" if (firstchar == '-') {négatif = true; limit = Integer.min_value; } else if (firstchar! = '+') Throw NumberFormatexception.ForInputString (S); if (len == 1) // ne peut pas avoir seul "+" ou "-" throw numberFormatexception.ForInputString (s); i ++; } mulmin = limite / radix; tandis que (i <len) {// s'accumuler négativement évite les surprises près de max_value numérique = caractères.digit (s.charat (i ++), radix); if (numérique <0) {throw numberformatexception.ForInputString (s); } if (result <mulmin) {throw numberformatexception.ForInputString (s); } Résultat * = radix; if (result <limit + chiffre) {throw numberformatexception.ForInputString (s); } Résultat - = chiffre; }} else {throw numberFormatexception.ForInputString (s); } Retour négatif? Résultat: -result; }Résumer
Ce qui précède est la différence et l'analyse du code de résultat de Integer.Valueof, PartentInt () String.Valueof en Java présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!