違いは何ですか
Object foo = "something";
String bar = String.valueOf(foo);
と
Object foo = "something";
String bar = (String) foo;
文字列へのキャストは、オブジェクトが実際に文字列である場合にのみ機能します。
Object reallyAString = "foo";
String str = (String) reallyAString; // works.
オブジェクトがそれ以外の場合は機能しません:
Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
String.valueOf()
ただし、渡されたものはすべて に変換しようとしますString
。プリミティブ ( 42
) とオブジェクト ( new Integer(42)
、そのオブジェクトの を使用) の両方を処理しますtoString()
。
String str;
str = String.valueOf(new Integer(42)); // str will hold "42"
str = String.valueOf("foo"); // str will hold "foo"
Object nullValue = null;
str = String.valueOf(nullValue); // str will hold "null"
特に最後の例に注意してください: に渡すnull
とString.valueOf()
string が返されます"null"
。
キャストとは、オブジェクトが String 型である必要があることを意味しますが、String.valueOf()
他の型も取ることができます。
の場合、どちらも同じ出力String
を生成します。
Casting
提供されたオブジェクトがstring.
String.valueOf メソッドは、そのパラメーター オブジェクトの文字列表現を取得するために使用されます。
(文字列) value は、オブジェクトの値を文字列にキャストします。
String.valueOf メソッドを使用すると、null 参照を気にせずにオブジェクトの String 表現を取得できます。null 参照で String をキャストしようとすると、NullPointerException が発生します。
final Object obj = null; final String strValOfObj = String.valueOf(obj); final String strCastOfObj = (String) obj; if (strValOfObj == null) System.out.println("strValOfObj is null"); if (strCastOfObj == null) System.out.println("strCastOfObj is null");
出力:strCastOfObj is null