¿Cuáles son las diferencias entre los literales ''/ n'' y ''/ r'' en Java?
newline carriage-return (6)
En Java, los caracteres de nueva línea y de retorno de carro parecen mostrar el mismo efecto.
¿Cuáles son las diferencias reales entre los literales de caracteres /n
/r
en Java?
Tenga en cuenta que lo anterior pregunta sobre el carácter /n
, no sobre la función newLine()
en BufferedWriter
, por lo que esta otra pregunta no es relevante.
Cuando imprime una cadena en la consola (Eclipse), / n, / r y / r / n tienen el mismo efecto, todos le darán una nueva línea, pero / n / r (también / n / n, / r / r) le dará dos nuevas líneas; cuando escribe una cadena en un archivo, solo / r / n puede darle una nueva línea.
Depende de en qué plataforma trabajes. Para obtener el resultado correcto use -
System.getProperty("line.separator")
En realidad, depende de lo que se utiliza para imprimir el resultado. Por lo general, el resultado es el mismo, como usted dice -
Históricamente, el retorno de carro se supone que debe hacer respecto a lo que hace el botón de home
: devolver el cursor al inicio de la línea.
Se supone que /n
le da una nueva línea pero no mueve el cursor.
Si piensas en impresoras antiguas, estás pensando en cómo pensaban los autores originales de los conjuntos de caracteres. Es una operación diferente mover el alimentador de papel y mover el caret. Estos dos personajes expresan esa diferencia.
La diferencia no es específica de Java, sino específica de plataforma. Históricamente, los sistemas operativos similares a UNIX han usado /n
como carácter de nueva línea, algunos otros sistemas operativos en desuso han usado /r
sistemas operativos Windows han empleado /r/n
.
/n
es para unix
/r
es para mac (antes de OS X)
/r/n
es para formato de windows
también puede tomar System.getProperty("line.separator")
Te dará el adecuado para tu sistema operativo.
/n
es un carácter de avance de línea (LF), código de carácter 10. /r
es un carácter de retorno de carro (CR), código de carácter 13. Lo que hacen difiere de un sistema a otro. En Windows, por ejemplo, las líneas en los archivos de texto se terminan usando CR seguido inmediatamente por LF (por ejemplo, CRLF). En los sistemas Unix y sus derivados, solo se usa LF. (Las Mac anteriores a Mac OS X utilizaban CR, pero Mac OS X es un derivado * nix y, por lo tanto, usa LF).
En los viejos tiempos, LF literalmente solo hacía un salto de línea en las impresoras (moviéndose hacia abajo una línea sin moverse hacia donde está horizontalmente en la página), y CR se movió de manera similar al principio de la línea sin mover el papel hacia arriba, por lo tanto, algunos sistemas (como Windows) enviando CR (regrese al lado izquierdo) y LF (y alimente el papel).
Debido a toda esta confusión, algunos objetivos de salida aceptarán múltiples secuencias de salto de línea, por lo que podría ver el mismo efecto de cualquiera de los caracteres dependiendo de a lo que esté enviando.