Veamos primero el código
public class IntegerDemo {public static void main (string [] args) {String num = null; System.out.println (Integer.ParseInt (num)); // excepción java.lang.numberFormateException System.out.println (Integer.ValueOf (num)); // excepción java.lang.numberFormateException System.out.println (String.ValueOf (num)); // Salida null num = ""; System.out.println (Integer.ParseInt (num)); // excepción java.lang.numberFormateException System.out.println (integer.valueOf (num)); // excepción java.lang.numberFormateException System.out.println (String.ValueOf (num)); // cadena vacía, no se emite nada}}Echemos un vistazo a cómo se escribe String.ValueOf ()
String.ValueOf () puede emitir normalmente al encontrar cadenas nulas y vacías, por lo que no se lanzan errores.
Echemos un vistazo a cómo se maneja el entero de tipo de embalaje
En ambos métodos, ParseInt (s, 10) es convertir las cadenas S en un tipo básico INT Decimal int, pero ValueOf () se recuperará del caché interno de [-127, 127] de acuerdo con el rango INT (utilizando el modo de entidad en el modo de diseño)
Echemos un vistazo a Parseint (S, 10). En el método, juzgaremos si la cadena es un número legal, y verificaremos otros formatos como nulo, cadena vacía, etc., por lo que lanzaremos un error
public static int parseint (String s, int radix) lanza NumberFormateException { / * * ADVERTENCIA: Este método se puede invocar temprano durante la inicialización de VM * antes de que se inicialice IntegerCache. Se debe tener cuidado para no usar * el método ValueOf. */ if (s == null) {tire nuevo numberFormateException ("null"); } if (Radix <caracteres.min_radix) {tire nuevo numberFormateException ("Radix" + Radix + "Menos que caracteres.min_radix"); } if (radix> caracteres.max_radix) {tire nuevo numberFormateException ("radix" + radix + "mayor que el personaje.max_radix"); } int resultado = 0; boolean negativo = falso; int i = 0, len = s.length (); int limit = -integer.max_value; int multin; int digit; if (len> 0) {char firstchar = s.charat (0); if (firstChar <'0') {// Posible liderazgo "+" o "-" if (firstChar == '-') {negativo = true; limit = integer.min_value; } else if (firstchar! = '+') Throw NumberFormateException.ForInputString (s); if (len == 1) // no puede tener solitario "+" o "-" tire numberFormateException.forInputString (s); i ++; } multmin = limit / radix; mientras que (i <len) {// acumular negativamente evita sorpresas cerca de max_value digit = caracteres.digit (s.charat (i ++), radix); if (digit <0) {lanzar numberFormateException.forInputString (s); } if (resultado <multmin) {lanzar numberFormateException.forInputString (s); } resultado *= radix; if (resultado <límite + dígito) {lanzar numberFormateException.forInputString (s); } resultado -= dígito; }} else {Throw NumberFormateException.ForInputString (s); } return negativo? resultado: -result; }Resumir
Lo anterior es la diferencia y el análisis del código de resultados de Integer.ValueOf, parsetInt () String.ValueOf en Java presentados por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!