Ich lese Effective Java und es wird %n
überall für das Zeilenumbruchzeichen verwendet. Ich habe \n
ziemlich erfolgreich für Newline in Java-Programmen verwendet.
Welches ist das "richtige"? Was ist los mit \n
? Warum hat Java diese C-Konvention geändert?
\n
in plattformspezifische Zeilenumbrüche im Textformat, siehe dies , Java nicht)Antworten:
Von einem schnellen Google:
Weitere Informationen finden Sie unter https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
Originalquelle
quelle
%n
ist plattformübergreifend\n
nicht tragbar .Siehe die Syntax der Formatierungszeichenfolge in der Referenzdokumentation :
quelle
Während dies
\n
das richtige Zeilenumbruchzeichen für Unix-basierte Systeme ist, verwenden andere Systeme möglicherweise andere Zeichen, um das Ende einer Zeile darzustellen. Insbesondere die Verwendung von Windows-Systemen\r\n
und frühen MacOS-Systemen\r
.Durch die Verwendung
%n
in Ihrer Formatzeichenfolge weisen Sie Java an, den von zurückgegebenen Wert zu verwendenSystem.getProperty("line.separator")
, der das Zeilentrennzeichen für das aktuelle System darstellt.quelle
Warnung:
Wenn Sie NETWORKING Code tun, könnten Sie die Gewissheit bevorzugen
\n
, im Gegensatz zu%n
denen verschiedene Zeichen über das Netzwerk senden kann, je nachdem , was Plattform es läuft auf.quelle
"richtig" hängt davon ab, was genau Sie versuchen zu tun.
\ n gibt Ihnen immer ein Zeilenende im "Unix-Stil". \ r \ n gibt Ihnen immer ein Zeilenende "dos style". % n gibt Ihnen das Zeilenende für die Plattform, auf der Sie laufen
C geht anders damit um. Sie können eine Datei entweder im "Text" - oder im "Binär" -Modus öffnen. Wenn Sie die Datei im Binärmodus öffnen, erhalten Sie mit \ n ein Zeilenende im "Unix-Stil" und mit "\ r \ n" ein Zeilenende im "Dos-Stil". Wenn Sie die Datei im "Text" -Modus auf einem dos / windows-System öffnen, konvertiert der Dateiverarbeitungscode beim Schreiben \ n in \ r \ n. Wenn Sie also eine Datei im Textmodus öffnen und \ n verwenden, erhalten Sie das plattformspezifische Zeilenende.
Ich kann sehen, warum die Designer von Java Cs hackige Ideen bezüglich der Dateimodi "Text" und "Binär" nicht replizieren wollten.
quelle
\n
Generieren Sie in Java immer\u000A
Zeilenvorschubzeichen. Um das richtige Zeilentrennzeichen für eine bestimmte Plattform zu erhalten, verwenden Sie es%n
.Verwenden
\n
Sie diese\u000A
Option, wenn Sie sicher sind, dass Sie Zeilenvorschubzeichen benötigen , z. B. im Netzwerk.In allen anderen Situationen verwenden
%n
quelle
Beachten Sie, dass diese Antworten nur wahr sind, wenn Sie
System.out.printf()
oderSystem.out.format()
oder dasFormatter
Objekt verwenden. Wenn Sie%n
in verwendenSystem.out.println()
, wird einfach eine%n
, keine neue Zeile erzeugt.quelle
Der Formatbezeichner% n ist ein Zeilentrennzeichen, das betriebssystemübergreifend portierbar ist. Es kann jedoch nicht als Argument für die Funktionen System.out.print oder System.out.println verwendet werden.
Es wird immer empfohlen, diese neue Version des Zeilentrennzeichens über \ n zu verwenden.
quelle