转换为String或在Java中使用String.valueOf()

kee*_*lar 1 java string casting class

今天早上我发现了一个有趣的问题--- 将对象强制转换为字符串检查是否有效,我发现有两种类型的答案.一种是将对象转换为String,另一种是获取该对象的字符串表示(例如,使用String.valueOf()或toString()).我的问题是:最佳做法是什么?他们之间有什么区别?

在我提出这些问题之前,我发现了一些相关的现有问题,但我找不到一个能回答我问题的问题.如果我错过了重要的一个,请原谅我,希望你不介意指点我的答案.

谢谢,

ass*_*ias 12

如果Object不是String,则强制转换将ClassCastException在运行时抛出.例如:

Object o = new Object();
String s = (String) o; //Exception here
Run Code Online (Sandbox Code Playgroud)

其他两个解决方案(toStringvs. String.valueOf)之间的区别在于null对象.toString将抛出异常,而String.valueOf()只会返回"null":

Object o = null;
String s = String.valueOf(o); //s = "null";
String t = o.toString(); //NullPointerException
Run Code Online (Sandbox Code Playgroud)

  • @keelar如果你100%确定你有一个String,那么强制转换(例如在`if(o instanceof String)`check之后).如果您不知道并且只想要某个随机对象的String表示,则应使用toString或String.valueOf(取决于空字符串时所需的行为). (2认同)