Qual é exatamente a diferença técnica entre console.writeline
e System.out.println
? Eu sei que System.out.println
escreve na saída padrão, mas isso não é a mesma coisa que o console?
Não compreendo completamente a documentação para console.writeline
.
Respostas:
Aqui estão as principais diferenças entre usar
System.out
/.err
/.in
eSystem.console()
:System.console()
retorna nulo se seu aplicativo não for executado em um terminal ( embora você possa lidar com isso em seu aplicativo )System.console()
fornece métodos para ler a senha sem repetir os caracteresSystem.out
eSystem.err
use a codificação da plataforma padrão, enquanto osConsole
métodos de saída de classe usam a codificação do consoleEsse último comportamento pode não ser imediatamente óbvio, mas código como este pode demonstrar a diferença:
No meu Windows XP, que possui uma codificação de sistema do windows-1252 e uma codificação de console padrão do IBM850, este código escreverá:
Observe que esse comportamento depende da codificação do console ser definida como uma codificação diferente da codificação do sistema. Esse é o comportamento padrão no Windows por vários motivos históricos.
fonte
Eles são essencialmente os mesmos, se o seu programa for executado a partir de um prompt interativo e você não redirecionou stdin ou stdout:
resulta em:
O motivo
Console
existe é fornecer recursos úteis no caso específico em que você está sendo executado a partir de uma linha de comando interativa:Console
enfileirá-los muito bem, enquanto que se você usasse System.in/out, todos os prompts apareceriam simultaneamente).Observe acima que o redirecionamento de até mesmo um dos fluxos resulta em
System.console()
retornonull
; outra irritação é que muitas vezes não háConsole
objeto disponível quando gerado por outro programa como o Eclipse ou o Maven.fonte
Primeiro, receio que sua pergunta contenha um pequeno erro. Não há método writeline na classe Console. Em vez disso, a classe Console fornece o método writer () que retorna PrintWriter. Este gravador de impressão possui println ().
Agora, qual é a diferença entre
e
Se você executar seu aplicativo na linha de comando, acho que não há diferença. Mas se o console estiver indisponível, System.console () retornará nulo enquanto System.out ainda existir. Isso pode acontecer se você chamar seu aplicativo e executar o redirecionamento de STDOUT para o arquivo.
Aqui está um exemplo que acabei de implementar.
Quando executei o aplicativo no prompt de comando, obtive o seguinte:
mas quando redirecionei o STDOUT para o arquivo ...
A linha 8 é
console.writer().println()
.Aqui está o conteúdo de / tmp / test
Espero que minhas explicações ajudem.
fonte
Não há
Console.writeline
em Java. É no .NET.Console e saída padrão não são os mesmos. Se você ler a página Javadoc mencionada , verá que um aplicativo pode ter acesso a um console apenas se for chamado a partir da linha de comando e a saída não for redirecionada dessa maneira
Outros casos são abordados na resposta de SimonJ, embora ele tenha perdido o argumento de que não há
Console.writeline
.fonte