¿Cuál es exactamente la diferencia técnica entre console.writeline
y System.out.println
? Sé que System.out.println
escribe en la salida estándar, pero ¿no es lo mismo que la consola?
No entiendo completamente la documentación de console.writeline
.
Respuestas:
Estas son las principales diferencias entre usar
System.out
/.err
/.in
ySystem.console()
:System.console()
devuelve nulo si su aplicación no se ejecuta en una terminal ( aunque puede manejar esto en su aplicación )System.console()
proporciona métodos para leer la contraseña sin hacer eco de caracteresSystem.out
ySystem.err
usa la codificación de plataforma predeterminada, mientras que losConsole
métodos de salida de clase usan la codificación de la consolaEste último comportamiento puede no ser inmediatamente obvio, pero un código como este puede demostrar la diferencia:
En mi Windows XP que tiene una codificación de sistema de windows-1252 y una codificación de consola predeterminada de IBM850, este código escribirá:
Tenga en cuenta que este comportamiento depende de que la codificación de la consola se establezca en una codificación diferente a la codificación del sistema. Este es el comportamiento predeterminado en Windows por varias razones históricas.
fuente
Son esencialmente lo mismo, si su programa se ejecuta desde un indicador interactivo y no ha redirigido stdin o stdout:
resulta en:
El motivo
Console
es proporcionar funciones que sean útiles en el caso específico de que se esté ejecutando desde una línea de comandos interactiva:Console
pondrán en cola muy bien, mientras que si usó System.in/out, todas las solicitudes aparecerían simultáneamente).Observe arriba que redirigir incluso una de las secuencias da como resultado el
System.console()
retornonull
; otra irritación es que a menudo no hay ningúnConsole
objeto disponible cuando se genera desde otro programa como Eclipse o Maven.fuente
Primero, me temo que su pregunta contiene un pequeño error. No hay una línea de escritura de métodos en la clase Console. En su lugar, la clase Console proporciona el método escritor () que devuelve PrintWriter. Este escritor de impresión tiene println ().
Ahora, ¿cuál es la diferencia entre
y
Si ejecuta su aplicación desde la línea de comandos, creo que no hay diferencia. Pero si la consola no está disponible, System.console () devuelve nulo mientras System.out todavía existe. Esto puede suceder si invoca su aplicación y realiza la redirección de STDOUT al archivo.
Aquí hay un ejemplo que acabo de implementar.
Cuando ejecuté la aplicación desde el símbolo del sistema, obtuve lo siguiente:
pero cuando redirigí el STDOUT al archivo ...
La línea 8 es
console.writer().println()
.Aquí está el contenido de / tmp / test
Espero que mis explicaciones ayuden.
fuente
No hay
Console.writeline
en Java. Está en .NET.La consola y la salida estándar no son iguales. Si lee la página de Javadoc que mencionó , verá que una aplicación puede tener acceso a una consola solo si se invoca desde la línea de comando y la salida no se redirige así.
Otros casos similares están cubiertos en la respuesta de SimonJ, aunque se perdió el punto de que no hay
Console.writeline
.fuente