92

違いは何ですか

Object foo = "something";
String bar = String.valueOf(foo);

Object foo = "something";
String bar = (String) foo;
4

8 に答える 8

156

文字列へのキャストは、オブジェクトが実際に文字列である場合にのみ機能します。

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"

特に最後の例に注意してください: に渡すnullString.valueOf()string が返されます"null"

于 2013-05-29T13:33:06.270 に答える
5

キャストとは、オブジェクトが String 型である必要があることを意味しますが、String.valueOf()他の型も取ることができます。

于 2013-05-29T13:32:45.363 に答える
5

の場合、どちらも同じ出力Stringを生成します。

Casting提供されたオブジェクトがstring.

于 2013-05-29T13:33:03.457 に答える
2

String.valueOf メソッドは、そのパラメーター オブジェクトの文字列表現を取得するために使用されます。

(文字列) value は、オブジェクトの値を文字列にキャストします。

String.valueOf メソッドを使用すると、null 参照を気にせずにオブジェクトの String 表現を取得できます。null 参照で String をキャストしようとすると、NullPointerException が発生します。

于 2013-05-29T13:36:57.697 に答える
1
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

于 2016-11-22T11:02:26.310 に答える