String强转,String.valueOf()和toString都能达到将一个类型转化为String类型,或者说,获取到String类型的值;
String suc = "6666";
String valueStr = String.valueOf(suc);
String toStr = suc.toString();
String strStr = (String)suc;
都可以达到目的..这是同,其异的地方在哪里呢....
String强转
之 ClassCastException
既然是强转,肯定是具有继承关系之间的强转及基础数据类型那几个之间的转换.(或者不成立,父类对象指向子类对象的引用)
但是一点,如果强转的类型不一致,就会出现如下问题:
toString()方法
之NullPointerException
toString的好处之一更多的是,我们在实体对象中重写toString()方法,以更直观的展示对象之间的属性名称及属性值.
但是,toString(),即使是重写的时候,也是对应当前对象是否存在,即null类型的判断
String.valueOf()
之null与"null"的恒等;
String.valueOf()使用的地方是比上述的方法要强大了....该方法返回的就是一个String,而内部是实现了toString的方法,即:
首先一点,避免了toString的空指针问题...同样,由于该方法对所有的object都实现了获取其String类型的值,故也不存在classCast的问题;即使这样他也不是万能的;
即使我将intA改为String 类型....String会将一个null值转化为值null;同样的"null"值也是的...
这样是有一丁点儿歧义的...
总结:
其实String.valueOf()的不同只是个人的吹毛求疵,这种业务场景还是很少见的...所以有时候还要多加思考一下.