转换为String和String.valueOf之间的区别

时间:2013-05-29 13:30:24

标签: java casting

之间有什么区别
Object foo = "something";
String bar = String.valueOf(foo);

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

8 个答案:

答案 0 :(得分:133)

仅当对象实际上是一个字符串时,才能转换为字符串:

Object reallyAString = "foo";
String str = (String) reallyAString; // works.

当对象是其他东西时,它将无效:

Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
然而,

String.valueOf()会尝试将您传入的内容转换为String。它使用该对象的toString()处理基元(42)和对象(new Integer(42)):

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()将返回字符串"null"

答案 1 :(得分:16)

String.valueOf(foo)调用 foo .toString()方法,并将结果分配给。它是null并且类型安全操作。

如果类型匹配,则广告会将 foo 分配给。否则,表达式将抛出ClassCastException

答案 2 :(得分:4)

String的情况下,两者都生成相同的输出

如果提供的对象不是Casting

string.会失败

答案 3 :(得分:2)

强制转换意味着对象必须是String类型,而String.valueOf()也可以使用其他类型。

答案 4 :(得分:2)

String.valueOf方法用于获取其参数对象的String表示。

(String)value将对象值转换为字符串。

您可以使用String.valueOf方法获取对象的String表示形式,而无需担心空引用。如果您尝试在空引用上强制转换String,则会出现NullPointerException。

答案 5 :(得分: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

答案 6 :(得分:0)

第一个,即String.valueOf仅当对象是可表示的类型(值类型或字符串)时才返回字符串。否则它会抛出异常。

在后者中,如果对象不是字符串,则直接进行转换会失败。

在线示例。

http://ideone.com/p7AGh5

答案 7 :(得分:0)

String.valueOf()中的

; string作为工作类型转换在valueof()方法中传递的所有参数在String中转换,就像integer.string()只将整数转换为字符串