转换为String和String.valueOf之间的区别
有什么区别
Object foo = "something"; String bar = String.valueOf(foo);
和
Object foo = "something"; String bar = (String) foo;
只有当对象实际上是一个string时,才能将其转换为string:
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)
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.valueOf(foo)
调用foo的.toString()
方法,从中创build一个String
并将其分配给该栏 。
由于types匹配,Casting只会将foo分配给该栏 。 否则,该expression式将抛出一个ClassCastException
。
Casting意味着对象需要是Stringtypes,而String.valueOf()
也可以是其他types。
String.valueOf方法用于获取参数对象的String表示forms。
(string)值将对象值转换为string。
您可以使用String.valueOf方法来获取对象的string表示forms,而不用担心空引用。 如果你试图在空引用上强制转换String,你将会得到一个NullPointerExceptionexception。
在String
情况下都会产生相同的输出 。
如果提供的对象不是string.
则Casting
失败string.
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
第一个例如, String.valueOf
只有在对象是值types或string的可表示types时才会返回string。否则,将引发exception。
在后者中,如果对象不是string,则直接进行投射。
在线示例。
在String.valueOf(); string作为工作types转换所有在valueof()方法中传递的参数在String中转换,就像integer.string()将整数转换为string