String、toString和String.valueOf在android开发中有着非常明显的区别,具体区别直接看代码:
Boolean boo = true;
String str1 = (String)boo;//编译报错
String str2 = boo.toString();//编译通过
String str3 = String.valueOf(boo);//编译通过
可以看出,String强转是行不通的。再看一个例子:
Object oo = null;
String str1 = (String)oo;//编译报错
String str2 = oo.toString();//编译通过,运行时报错
String str3 = String.valueOf(oo);//运行正常
第三行运行时报错:
15:44:40.938 18241 18241 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sample/com.sample.Activity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference,所以,toString也存在缺点。
综上所述,推荐使用String.valueOf进行类型转换。