Entrada y salida estándar (teclado y pantalla)
En Java, la entrada desde teclado y la salida a pantalla están reguladas a traves de la clase System. Esta clase pertenece al package java.lang y agrupa diversos métodos y objetos que tienen relación con el sistema local. Contiene, entre otros, tres objetos static que son:
System.in: Objeto de la clase InputStream preparado para recibir datos desde la entrada estándar del sistema (habitualmente el teclado).
System.out: Objeto de la clase PrintStream que imprimirá los datos en la salida estándar del sistema (normalmente asociado con la pantalla).
System.err: Objeto de la clase PrintStream. Utilizado para mensajes de error que salen también por pantalla por defecto.
Estas clases permiten la comunicación alfanumérica con el programa a través de lo métodos incluidos en la Tabla 9.4. Son métodos que permiten la entrada/salida a un nivel muy elemental.
Existen tres métodos de System que permiten sustituir la entrada y salida estándar. Por ejemplo, se utiliza para hacer que el programa lea de un archivo y no del teclado.
System.setIn(InputStream is);
System.setOut(PrintStream ps);
System.setErr(PrintStream ps);
El argumento de setIn() no tiene que ser necesariamente del tipo InputStream. Es una referencia a la clase base, y por tanto puede apuntar a objetos de cualquiera de sus clases derivadas (como FileInputStream). Asimismo, el constructor de PrintStream acepta un OutputStream, luego se puede dirigir la salida estándar a cualquiera de las clases definidas para salida.
Si se utilizan estas sentencias con un compilador de Java 1.1 se obtiene un mensaje de método obsoleto (deprecated) al crear un objeto PrintStream. Al señalar como obsoleto el constructor de esta clase se pretendía animar al uso de PrintWriter, pero existen casos en los cuales es imprescindible un elemento PrintStream. Afortunadamente, Java 1.2 ha reconsiderado esta decisión y de nuevo se puede utilizar sin problemas.
Fuente: Aprenda Java como si estuviera en primero de la Universidad de Navarra