scientific - ¿Qué pasa con "% n" de Java en printf?
double without exponential java (8)
Estoy leyendo Effective Java y usa %n
para el carácter de nueva línea en todas partes. He utilizado /n
bastante bien para newline en programas de Java.
¿Cual es la correcta? ¿Qué pasa con /n
? ¿Por qué Java cambió esta convención de C?
"correcto" depende de qué es exactamente lo que estás tratando de hacer.
/ n siempre le dará un final de línea "estilo Unix". / r / n siempre le dará un final de línea "estilo dos". % n le dará la terminación de línea para la plataforma en la que se está ejecutando
C maneja esto de manera diferente. Puede elegir abrir un archivo en modo "texto" o "binario". Si abre el archivo en modo binario / n le dará un final de línea "estilo Unix" y "/ r / n" le dará un final de línea "dos estilo". Si abre el archivo en modo "texto" en un sistema dos / windows, cuando escriba / n, el código de manejo del archivo lo convierte en / r / n. Entonces, al abrir un archivo en modo texto y al usar / n, obtiene el final de línea específico de la plataforma.
Puedo ver por qué los diseñadores de Java no quisieron replicar las ideas hacky de C con respecto a los modos de archivo "texto" y "binario".
Advertencia: si está utilizando el código NETWORKING, puede preferir la certeza de / n, en oposición a% n, que puede enviar diferentes caracteres a través de la red, dependiendo de la plataforma en la que se esté ejecutando.
De un google rápido:
También hay un especificador que no corresponde a un argumento. Es "% n" que genera un salto de línea. También se puede usar "/ n" en algunos casos, pero dado que "% n" siempre genera el separador de línea específico de la plataforma correcto, es portátil en todas las plataformas, mientras que "/ n" no lo es.
Consulte https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
El especificador de formato% n es un separador de línea que es portátil en todos los sistemas operativos. Sin embargo, no se puede usar como argumento para las funciones System.out.print o System.out.println.
Siempre se recomienda usar esta nueva versión del separador de línea arriba / n.
En java, /n
siempre genera /u000A
carácter de /u000A
línea. Para obtener el separador de línea correcto para una plataforma particular, use %n
.
Así que use /n
cuando esté seguro de que necesita /u000A
carácter de /u000A
línea, por ejemplo, en una red.
En todas las demás situaciones use %n
Mientras /n
es el carácter correcto de nueva línea para sistemas basados en Unix, otros sistemas pueden usar caracteres diferentes para representar el final de una línea. En particular, el uso del sistema de Windows /r/n
, y los primeros sistemas MacOS utilizados /r
.
Al usar %n
en su cadena de formato, le dice a Java que use el valor devuelto por System.getProperty("line.separator")
, que es el separador de línea para el sistema actual.
Observe que estas respuestas solo son verdaderas cuando se usa System.out.printf()
o System.out.format()
o el objeto Formatter
. Si usa %n
en System.out.println()
, simplemente producirá un %n
, no una línea nueva.
%n
es portable a través de plataformas /n
no lo es.
Consulte la sintaxis de la cadena de formato en la documentación de referencia :
''n'' line separator El resultado es el separador de línea específico de la plataforma