有什么区别
Object foo = "something";
String bar = String.valueOf(foo);
Run Code Online (Sandbox Code Playgroud)
和
Object foo = "something";
String bar = (String) foo;
Run Code Online (Sandbox Code Playgroud)
Joa*_*uer 139
仅当对象实际是字符串时,仅转换为字符串:
Object reallyAString = "foo";
String str = (String) reallyAString; // works.
Run Code Online (Sandbox Code Playgroud)
当对象是其他东西时,它将无法工作:
Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
特别注意最后一个例子:传递null给String.valueOf()将返回字符串"null".
dar*_*jan 18
String.valueOf(foo)调用foo的.toString()方法并将结果分配给栏.它是null并且类型安全操作.
如果类型匹配,则转换将仅向条形指定foo.否则,表达式将抛出一个.ClassCastException