转换为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,则直接进行投射。

在线示例。

http://ideone.com/p7AGh5

在String.valueOf(); string作为工作types转换所有在valueof()方法中传递的参数在String中转换,就像integer.string()将整数转换为string