Je lis Effective Java et il utilise %n
partout le caractère de nouvelle ligne. J'ai utilisé \n
plutôt avec succès pour la nouvelle ligne dans les programmes Java.
Quelle est la «bonne»? Quel est le problème avec \n
? Pourquoi Java a-t-il changé cette convention C?
\n
en nouvelle ligne spécifique à la plate-forme au format texte, voyez ceci , Java ne le fait pas)Réponses:
D'un google rapide:
Veuillez vous référer à https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
Source primaire
la source
%n
est portable sur toutes les plates-formes\n
ne l'est pas.Consultez la syntaxe de la chaîne de mise en forme dans la documentation de référence :
la source
Bien que ce
\n
soit le caractère de nouvelle ligne correct pour les systèmes Unix, d'autres systèmes peuvent utiliser des caractères différents pour représenter la fin d'une ligne. En particulier, l'utilisation du système Windows\r\n
et les premiers systèmes MacOS utilisés\r
.En utilisant
%n
dans votre chaîne de format, vous indiquez à Java d'utiliser la valeur renvoyée parSystem.getProperty("line.separator")
, qui est le séparateur de ligne pour le système actuel.la source
Avertissement:
Si vous utilisez du code NETWORKING, vous préférerez peut-être la certitude de
\n
, par opposition à%n
laquelle peut envoyer différents caractères sur le réseau, en fonction de la plate-forme sur laquelle il s'exécute.la source
«correct» dépend de ce que vous essayez de faire exactement.
\ n vous donnera toujours une fin de ligne de "style unix". \ r \ n vous donnera toujours une fin de ligne "style dos". % n vous donnera la fin de ligne pour la plate-forme sur laquelle vous utilisez
C gère cela différemment. Vous pouvez choisir d'ouvrir un fichier en mode «texte» ou «binaire». Si vous ouvrez le fichier en mode binaire \ n vous donnera une fin de ligne "style unix" et "\ r \ n" vous donnera une fin de ligne "style dos". Si vous ouvrez le fichier en mode "texte" sur un système dos / windows, lorsque vous écrivez \ n le code de gestion de fichier le convertit en \ r \ n. Ainsi, en ouvrant un fichier en mode texte et en utilisant \ n, vous obtenez la fin de ligne spécifique à la plate-forme.
Je peux voir pourquoi les concepteurs de java ne voulaient pas reproduire les idées hacky de C concernant les modes de fichiers "texte" et "binaire".
la source
En java,
\n
générez toujours un\u000A
caractère de saut de ligne. Pour obtenir le séparateur de ligne correct pour une utilisation particulière de la plate-forme%n
.Utilisez donc
\n
lorsque vous êtes sûr que vous avez besoin de\u000A
caractères de saut de ligne, par exemple en réseau.Dans toutes les autres situations, utilisez
%n
la source
Notez que ces réponses ne sont vraies que lorsque vous utilisez
System.out.printf()
ouSystem.out.format()
ou l'Formatter
objet. Si vous utilisez%n
inSystem.out.println()
, cela produira simplement un%n
, pas une nouvelle ligne.la source
Le spécificateur de format% n est un séparateur de ligne portable sur tous les systèmes d'exploitation. Cependant, il ne peut pas être utilisé comme argument des fonctions System.out.print ou System.out.println.
Il est toujours recommandé d'utiliser cette nouvelle version du séparateur de ligne ci-dessus \ n.
la source