任意のオブジェクトの内容を System.out.println
で出力する場合は、オブジェクトそのものを渡してしまうのが一番楽で安全です。
あらかじめ対象オブジェクトの toString()
を実行し、得られた文字列を System.out.println
に渡している例を見かけますが、あまりメリットはありません。
System.out.println(obj.toString()); // toString で NullPointerException の可能性
System.out.println(obj); // obj が null なら null と表示してくれる
System.out.println
(実際は PrintStream#println
)は、null
が渡された場合に null
という文字列を出力してくれるようになっています。
自力で toString()
する場合は、toString()
実行時の NullPointerException
を考慮しておかなければいけませんが、オブジェクトをそのまま System.out.println
に渡すようにすれば、そのようなケアは必要なくなります(もちろん、null
と表示されても問題なければですが)。
ちなみに、PrintStream#println(Object)
の実装は下記のような感じになっています。
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
上記の、String.valueOf(x)
は、x
が null
である場合に null
という文字列を返すので、結果的に System.out.println
は null
という文字列を出力することになります。