2009-02-14 10 views
17

No he tenido la oportunidad de tomar ningún curso serio de programación de bajo nivel en la escuela. (Sé que realmente debería continuar aprendiendo el "detrás de escena" para ser un mejor programador.) Aprecio las conveniencias de Java, incluida la capacidad de incluir cualquier cosa en una declaración System.out.print. Sin embargo, ¿hay alguna razón por la que desee usar System.out.printf en su lugar?¿Hay alguna buena razón para usar "printf" en lugar de "imprimir" en java?

Además, ¿debo evitar imprimir llamadas como esta en "aplicaciones reales"? Probablemente sea mejor imprimir mensajes en la pantalla del cliente utilizando algún tipo de función de interfaz de usuario, ¿verdad?

Respuesta

26

El método de la clase PrintStreamprintf proporciona string formatting similar a la función printf en C.

el formato de printf utiliza el Formatter class' formatting syntax.

El método printf puede ser particularmente útil cuando se muestran múltiples variables en una línea de lo que sería tedioso usando concatenación de cadenas:

int a = 10; 
int b = 20; 

// Tedious string concatenation. 
System.out.println("a: " + a + " b: " + b); 

// Output using string formatting. 
System.out.printf("a: %d b: %d\n", a, b); 

Además, escribiendo aplicaciones Java no significa necesariamente que la escritura de aplicaciones GUI, por lo que al escribir aplicaciones de la consola, uno usaría print, println, printf y otras funciones que darán salida a System.out.

+0

un mejor ejemplo sería un punto flotante usando% + x.yf, donde xey son números diferentes. – Calyth

+3

¿Hay alguna implicación en el rendimiento? –

2

Es mejor si necesita controlar la precisión de sus números de punto flotante, hacer relleno, etc. System.out.print puede imprimir todo tipo de cosas, pero no puede hacer un control de precisión preciso y relleno con eso.

3

Normalmente, en una aplicación "real" escribiría en un sistema de registro como java.util.Logging o commons logging, que tienen la capacidad de registrar varios niveles de verbosidad (es decir, el modo "depurar", que estaría deshabilitado en un entorno de producción). Sin embargo, para la depuración temporal rápida y sucia, a veces System.out.println() es la forma más fácil de hacer las cosas (suponiendo que el entorno de ejecución descargue la salida estándar en algún lugar donde pueda leerla).

También debo mencionar que siempre puede usar "String.format()" para crear una cadena usando una lista de argumentos de formato y variable (luego pase esta cadena a un método de registro o System.out.println). Esto a menudo es más agradable que concatenar un conjunto de variables en una cadena.

2

Si la mayoría de los programas reales, se utiliza el registro. Los mensajes de depuración se pueden activar/desactivar a través de la configuración de registro. Ver log4j como un ejemplo.

Cuestiones relacionadas