强制转换为字符串和字符串之间的区别。值的
两者之间有什么区别
Object foo = "something";
String bar = String.valueOf(foo);
和
Object foo = "something";
String bar = (String) foo;
两者之间有什么区别
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()
将尝试将您传递给它的任何内容转换为 .它处理基元 () 和对象 (,使用该对象的 toString()
):String
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"
String.valueOf(foo)
调用 foo 的方法并将结果分配给柱。它是空的,类型安全操作。.toString()
如果类型匹配,则转换只会将 foo 分配给条形图。否则,表达式将引发 .ClassCastException