without scientific java newline printf

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

Fuente original


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.