String para int em Java: 4 maneiras mais um truque secreto

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que essa questão atormenta até desenvolvedores Java experientes?

Se você já pesquisou no Google "How do I convert a String to an int in Java?", então você não está sozinho. Esta é uma das perguntas mais populares no Stack Overflow, com milhões de visualizações. Parece simples, não? Pegue a string, converta para número — e pronto. Mas na prática, a conversão de String para int em Java esconde armadilhas: desde exceções inesperadas até a escolha entre desempenho e legibilidade do código.

Neste artigo, vamos analisar todas as formas populares de converter string em número em Java, comparando-as em velocidade, segurança e conveniência. Você aprenderá como evitar o clássico erro NumberFormatException e obterá soluções prontas para projetos reais. Vamos lá!



Método nº1: O clássico — Integer.parseInt()

A maneira mais comum e rápida de converter String para int em Java é usar o método estático Integer.parseInt(). Ele recebe uma string e retorna o tipo primitivo int.



public class ParseIntExample {    public static void main(String[] args) {        String number = "42";        int result = Integer.parseInt(number);        System.out.println(result); // Saída: 42    }}


Vantagens do Integer.parseInt():

  • Máximo desempenho — não cria objetos desnecessários.
  • Simplicidade — uma linha de código sem wrappers extras.
  • Suporte a sistemas numéricos — você pode especificar a base (radix): Integer.parseInt("ff", 16) retorna 255.


Desvantagens e armadilhas:

  • Se a string contiver caracteres não numéricos (espaços, letras), lança NumberFormatException.
  • Não trata null — resultará em NullPointerException.


// Exemplo de erro:String badInput = "42abc";int value = Integer.parseInt(badInput); // NumberFormatException!


Método nº2: O seguro Integer.valueOf()

A segunda forma popular de converter string em número em Java é Integer.valueOf(). Externamente, é semelhante ao parseInt(), mas retorna um objeto Integer, não um primitivo.



public class ValueOfExample {    public static void main(String[] args) {        String number = "123";        Integer result = Integer.valueOf(number);        System.out.println(result); // Saída: 123    }}


Quando usar valueOf()?

  • Se você precisar de um objeto Integer para coleções (ex.: List<Integer>).
  • Se você estiver trabalhando com Optional ou Stream API (veja abaixo).
  • Graças ao cache (para números de -128 a 127), valueOf() pode ser até mais rápido que parseInt() + autoboxing.


Observação importante:

Se você precisa do primitivo int, é melhor usar parseInt() — ele é cerca de 10-15% mais rápido, pois não cria um objeto wrapper. Mas em 99% das aplicações, essa diferença é imperceptível.



Método nº3: Java 8+ e Optional — tratamento elegante de erros

A abordagem moderna para converter String para int em Java é usar Optional. Isso permite evitar blocos try-catch e tornar o código mais limpo.



import java.util.Optional;

public class OptionalParseExample { public static Optional<Integer> safeParseInt(String str) { try { return Optional.of(Integer.parseInt(str)); } catch (NumberFormatException e) { return Optional.empty(); } }

public static void main(String[] args) { // Parsing bem-sucedido safeParseInt("100").ifPresent(System.out::println); // 100

Blogs

Book Recommendations