480 words
2 minutes
javaの改行について

皆さんJavaの改行、\n でやってませんか?#

はい、僕はやってました。

多分、現場で働いているエンジニアの人たちは経験あると思うんですが、WindowsとLinuxとかで改行がうまくいかないってこと、あったとおもいます。

「え、なんでここ改行されてないの?」とか、「ログが見づらいんだけど?」とかなった経験あるんじゃ無いでしょうか。

これ、実はOSによって改行コードが違うのが原因なんです。

改行コードって何者?#

ざっくり言うと、「ここで改行してね!」っていう見えない記号です。
これOSによってルールがバラバラなんですよ。

windowsでは『\r+\n』(CR+LF)
linuxでは『\n』(LF)
Macintosh(macos)では『\r』(CR)
で改行しています。

TIP

Macintoshは昔のMACのことです。今はlinuxと同じ『\n』です。

つまり、Javaのコードで \n をベタ書きしてると、「俺んとこでは動くけどあっちではズレる」みたいなややこしいことが起きちゃいます。
それではいけませんね。
javaはそれを防ぐことができます。

javaの改行メソッド#

javaには改行をするためのメソッドが存在しています。
それが

System.lineSeparator();

です。
javaをあんまり使ったことがない人は?ってなると思うのですが、これはシステム依存の行区切り文字を取得してくれるメソッドです。これによってプラットフォームには依存せずに改行できるようになるのです。

まとめ#

  • \n だけの改行は、OSによってはちゃんと動かないことがある。
  • Javaでは System.lineSeparator() を使うほうがいい。
  • どんな環境でも同じように動く、コードを書こう!