0

Quando usar Scanner ou BufferReader em JAVA?

EDUARDO CUPERTINO
EDUARDO CUPERTINO

Amigos , eu que estudei java a 11 anos atrás estou com essa cara do meme com tantas novidades no JAVA. Socorro!!

Citando o artigo do qual aprendi:

Na classe Scanner, se chamarmos o método nextLine () após qualquer um dos sete métodos nextXXX (), então o nextLine () não lerá os valores do console e o cursor não virá para o console, ele pulará essa etapa. 

Os métodos nextXXX () são

nextInt (),

nextFloat (),

nextByte (),

nextShort (),

nextDouble (),

nextLong (),

next ().

Na classe BufferReader não existe esse tipo de problema. Esse problema ocorre apenas para a classe Scanner, devido aos métodos nextXXX () ignorarem o caractere de nova linha e nextLine () só lê até o primeiro caractere de nova linha. Se usarmos mais uma chamada do método nextLine () entre nextXXX () e nextLine (), esse problema não ocorrerá porque nextLine () consumirá o caractere de nova linha. Veja isso para o programa corrigido. Este problema é o mesmo que scanf () seguido por gets () em C / C ++

Esse problema também pode ser resolvido usando next () em vez de nextLine () para obter a entrada de strings(...)

Outras diferenças:

  • BufferedReader é síncrono, mas o Scanner não. BufferedReader deve ser usado se estivermos trabalhando com vários threads.
  • BufferedReader tem memória buffer significativamente maior do que o Scanner.
  • O Scanner tem um pequeno buffer (buffer de 1 KB de caractere) em oposição ao BufferedReader (buffer de 8 KB de bytes), mas é mais do que suficiente.
  • BufferedReader é um pouco mais rápido em comparação com o scanner porque o scanner analisa os dados de entrada e o BufferedReader simplesmente lê a sequência de caracteres.


 

Vejam mais detalhes neste artigo de Pranav Adarsh. Direto no GeeksforGeeks

0
0

Comentários (2)

1
Débora Santos

Débora Santos

01/09/2021 15:11

Muito boa sua explicação. Eu estava exatamente com essa dúvida.

0
Leonardo Oliveira

Leonardo Oliveira

03/09/2021 11:39

Obrigado pelo artigo, Eduardo!

Em busca do .NET

Brasil