繁体   English   中英

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

[英]Difference between casting to String and String.valueOf

之间有什么区别

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()会尝试将传递给它的任何内容转换为String 它处理原语( 42 )和对象(使用该对象的toString() 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()将返回字符串"null"

String.valueOf(foo)调用foo.toString()方法,并将结果分配给bar 它为null,并输入安全操作。

如果类型匹配,则仅将foo赋给bar 否则,表达式将抛出ClassCastException

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

如果提供的对象不是string.Casting失败string.

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

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

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

您可以使用String.valueOf方法获取对象的String表示形式,而不必担心null引用。 如果尝试将String强制转换为null引用,则将获得NullPointerException。

 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仅在对象是可表示类型(它是值类型)或String时才返回字符串。否则它将引发异常。

在后一种情况下,您将直接强制转换,如果对象不是字符串,则可能会失败。

在线示例。

http://ideone.com/p7AGh5

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM