In Java zijn de retourfarakters van de nieuwlijn en het vervoers beide lijken hetzelfde effect te tonen.
Wat zijn de werkelijke verschillen tussen Char Literals \n
EN \r
IN JAVA?
Merk op dat het bovenstaande vraagt naar de \n
-karakter , niet de newLine()
functie op BufferedWriter
, en dus Deze andere vraag is niet relevant.
Antwoord 1, Autoriteit 100%
\n
is een lijninvoer (LF) -karakter, karaktercode 10. \r
is een koetsretour (CR) -karakter, karaktercode 13. Wat zij doen verschilt van systeem tot systeem. Op Windows worden bijvoorbeeld lijnen in tekstbestanden beëindigd met CR onmiddellijk gevolgd door LF (bijvoorbeeld CRLF). Op UNIX-systemen en hun derivaten wordt alleen LF gebruikt. (Macs voorafgaand aan Mac OS X gebruikte CR, maar Mac OS X is een * NIX-derivaat en maakt het gebruik van LF.)
In de oude dagen heeft LF letterlijk slechts een lijntoevoer op printers (uitgeschoven zonder te bewegen waar u horizonaal op de pagina bent) en CR op dezelfde manier teruggestuurd naar het begin van de lijn zonder Het papier verplaatsen, vandaar sommige systemen (zoals Windows) CR (terugkeer naar de linkerkant) en LF (en het papier invoeren).
Vanwege al deze verwarring accepteren enkele output-doelen meerdere lijnonderbrekingssequenties, zodat u hetzelfde effect kunt zien van beide tekens, afhankelijk van wat u uitvoert.
Antwoord 2, Autoriteit 65%
\n
is voor unix
\r
is voor Mac (vóór OS X)
\r\n
is voor Windows-indeling
U kunt ook System.getProperty("line.separator")
nemen
het geeft je het juiste voor je besturingssysteem
Antwoord 3, autoriteit 15%
Het hangt af van welk Platform je werkt. Gebruik –
. om het juiste resultaat te krijgen
System.getProperty("line.separator")
Antwoord 4, autoriteit 6%
Het verschil is niet Java-specifiek, maar platformspecifiek.
Historisch gezien hebben UNIX-achtige besturingssystemen \n
als nieuwe regel gebruikt, sommige andere verouderde besturingssystemen hebben \r
gebruikt en Windows-besturingssystemen hebben \r\n
.
Antwoord 5, autoriteit 4%
Het hangt er eigenlijk van af wat er wordt gebruikt om het resultaat af te drukken. Meestal is het resultaat hetzelfde, zoals je zegt –
Historisch gezien zou een regelterugloop moeten doen wat de home
-knop doet: het caret terugbrengen naar het begin van de regel.
\n
zou je een nieuwe regel moeten geven, maar het caret niet verplaatsen.
Als je aan oude printers denkt, denk je ongeveer hetzelfde als de oorspronkelijke auteurs van de karaktersets. Het is een andere handeling om de papierinvoer te verplaatsen en de caret te verplaatsen. Deze twee karakters drukken dat verschil uit.
Antwoord 6, autoriteit 2%
Als je een string in console (Eclipse) afdrukt, hebben\n,\r en \r\n hetzelfde effect, ze geven je allemaal een nieuwe regel;maar \n\r(ook \n\n ,\r\r) geeft je twee nieuwe regels; als je een string naar een bestand schrijft, kan alleen \r\n je een nieuwe regel geven.
Antwoord 7
De bovenstaande antwoorden zijn perfect. De tekens LF(\n
), CR(\r
) en CRLF(\r\n
) zijn platformafhankelijk. De interpretatie voor deze karakters wordt echter niet alleen bepaald door de platforms, maar ook door de console die u gebruikt. In Intellij console (Windows), dit \r
teken in deze instructie System.out.print("Happ\ry");
produceert de output y
. Maar als u de terminal (Windows) gebruikt, krijgt u yapp
als uitvoer.
Antwoord 8
Op de opdrachtregel verplaatst \r de cursor terug naar het begin van de huidige regel. Om het verschil te zien, moet u uw code uitvoeren vanaf een opdrachtprompt. De console van Eclipse toont vergelijkbare uitvoer voor beide expressies.
Voor een volledige lijst met escape-reeksen, klik hier https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.6