私は効果的なJavaを読んでい%n
て、どこでも改行文字に使用されています。私は\n
Javaプログラムの改行にかなりうまく使いました。
「正しい」ものはどれですか?何が問題になってい\n
ますか?JavaがこのCの規則を変更したのはなぜですか?
\n
テキスト形式でプラットフォーム固有の改行に自動変換されます。これは参照してください。Javaはそうではありません)
私は効果的なJavaを読んでい%n
て、どこでも改行文字に使用されています。私は\n
Javaプログラムの改行にかなりうまく使いました。
「正しい」ものはどれですか?何が問題になってい\n
ますか?JavaがこのCの規則を変更したのはなぜですか?
\n
テキスト形式でプラットフォーム固有の改行に自動変換されます。これは参照してください。Javaはそうではありません)
回答:
簡単なグーグルから:
引数に対応しない指定子も1つあります。改行を出力するのは「%n」です。「\ n」も使用できる場合がありますが、「%n」は常に正しいプラットフォーム固有の行区切り文字を出力するため、「\ n」はそうではなく、プラットフォーム間で移植可能です。
https://docs.oracle.com/javase/tutorial/java/data/numberformat.htmlを参照して ください
警告:
NETWORKINGコードを実行\n
して%n
いる場合は、実行しているプラットフォームに応じて、ネットワークを介して異なる文字を送信するのではなく、の確実性を優先できます。
「正しい」は、正確に何をしようとしているのかによって異なります。
\ nは常に「Unixスタイル」の行末を提供します。\ r \ nは常に「dosスタイル」の行末を提供します。%nは、実行しているプラットフォームの行末を示します
Cはこれを異なる方法で処理します。「テキスト」または「バイナリ」モードでファイルを開くことを選択できます。バイナリモードでファイルを開くと、\ nは「Unixスタイル」の行末を提供し、「\ r \ n」は「dosスタイル」の行末を提供します。dos / windowsシステムで「テキスト」モードでファイルを開いた場合、\ n書き込むと、ファイル処理コードが\ r \ nに変換します。したがって、ファイルをテキストモードで開き、\ nを使用すると、プラットフォーム固有の行が終了します。
Javaの設計者が「テキスト」および「バイナリ」ファイルモードに関するCのハックなアイデアを複製したくなかった理由がわかります。
Javaでは、\n
常に\u000A
改行文字を生成します。特定のプラットフォームの正しい行区切り文字を取得するには、を使用します%n
。
したがって、ネットワークなどでラインフィード文字\n
が必要なことが確実な場合に使用してください\u000A
。
他のすべての状況で使用%n
これらの答えは、System.out.printf()
またはSystem.out.format()
またはFormatter
オブジェクトを使用する場合にのみ当てはまることに注意してください。で使用する%n
とSystem.out.println()
、%n
改行ではなく単にが生成されます。