Java

【Java】String.valueOf()とObject.toString()の違い

JavaにおけるString.valueOf()Object.toString()の違いをメモしておきます。

String.valueOf()Object.toString()の違い

どちらもObject型をString型に変換してくれるメソッドですが、Object型の値がnullの場合の挙動が異なります。

  • String.valueOf()"null"という文字列を返す
  • Object.toString()NullPointerExceptionが発生する

コードで書くと以下のとおりです。

public static void main(String[] args) {
Object object = null;
String.valueOf(object); // "null"という文字列を返す
object.toString(); // NullPointerExceptionが発生する
}
view raw Demo.java hosted with ❤ by GitHub

注意点として、String.valueOf(object)は、nullを返すのではなく、"null"という文字列を返します。

String.valueOf()の中身を見てみるとわかりやすいかと思います。obj == nullの場合は"null"を返し、それ以外の場合はobj.toString()でObject型をString型に変換していますね。

public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
view raw Demo.java hosted with ❤ by GitHub

まとめ

String.valueOf()Object.toString()の違いでした。Object型をString型に変換するときに、nullが値として入る可能性があるのであれば、例外が発生しないString.valueOf()を使うのがよさそうです。

参考リンク

-Java

S