Vejamos o código primeiro
classe pública INTEGERDEMO {public static void main (string [] args) {string num = null; System.out.println (Integer.parseint (num)); // Exceção java.lang.NumberFormatexception System.out.println (Integer.valueof (num)); // exceção java.lang.numberformatexception System.out.println (string.valueof (num); // saída null num = ""; System.out.println (Integer.parseint (num)); // Exceção java.lang.numberFormatexception System.out.println (Integer.valueof (num)); // Exceção java.lang.numberFormatexception System.out.println (string.valueof (num)); // String vazia, nada é emitido}}Vamos dar uma olhada em como string.valueof () está escrito
String.ValueOf () pode produzir normalmente ao encontrar strings nulas e vazias, para que nenhum erro seja lançado.
Vamos dar uma olhada em como o tipo de embalagem inteiro é tratado
Nos dois métodos, o parseint (s, 10) é converter as strings s em um tipo básico decimal int, mas o valueof () será recuperado do cache interno de [-127, 127] de acordo com o intervalo int (usando o modo de entidade no modo de design)
Vamos dar uma olhada no Parseint (S, 10). No método, julgaremos se a string é um número legal, e verificaremos outros formatos, como nulo, string vazia, etc., então lançaremos um erro
public static int parseint (string s, int radix) lança numberformatexception { / * * aviso: Este método pode ser invocado precocemente durante a inicialização da VM * antes que o integgercache seja inicializado. Deve -se tomar cuidado para não usar * o método ValueOf. */ if (s == null) {lança novo númeroFormatexception ("null"); } if (radix <caractere.min_radix) {throw new NumberFormatexception ("radix" + radix + "menos que caractere.min_radix"); } if (radix> caractere.max_radix) {tire new NumberFormatexception ("radix" + radix + "maior que caractere.max_radix"); } int resultado = 0; booleano negativo = falso; int i = 0, len = s.Length (); int limite = -Integer.max_value; int multinin; int digit; if (len> 0) {char Firstchar = s.charat (0); if (Firstchar <'0') {// Possível Leading "+" ou "-" if (Firstchar == '-') {negativo = true; limite = Integer.min_value; } else if (FirstChar! = '+') Throw numberForMatexception.ForInputString (s); if (len == 1) // não puder ter solitário "+" ou "-" lança numberFormatexception.ForInputString (s); i ++; } multinin = limite / radix; enquanto (i <len) {// acumulando evita negativamente as surpresas próximas a max_value digit = caractere.digit (s.charat (i ++), radix); if (dígito <0) {throw numberformatexception.forinputString (s); } if (resultado <multinin) {throw numberformatexception.forinputString (s); } resultado *= radix; if (resultado <limite + dígito) {throw numberFormatexception.forinputString (s); } resultado -= dígito; }} else {throw numberformatexception.forinputString (s); } retornar negativo? Resultado: -Result; }Resumir
O exposto acima é a diferença e análise de código de resultados do número inteiro.ValueOf, paretIntInt () string.valueof em java apresentado a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!