Java中将数字转换成字符串的问题,请问大神们,这四种转法有什么区别?

Integer num=8;
//第一种转法:
String str=String.valueOf(num);
//第二种转法:
String str1=String.valueOf(num).toString();
//第三种转法:
String str2=num.toString();
//第四种转法:
String str3=num+"";

第二种方法等于说是第一种方法上脱裤子放屁。
第一种方法比第三种方法有一个好处:Integer类型的有可能为null,当null的时候,第一种方法不会挂掉,第三种方法会报空指针异常。
当然,如果你确定你的要转换的不为空的话,用第三种方法要快速的多。
第四种方法,Integer的级别比String低,因此你用一个Integer类型的去加String类型的话,默认转成String类型的在相加。是种隐式转换。
前三种是清楚明了的要往String转,称为显示转换。追问

第一种转法,要是num为null也会挂掉

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-23
前3种是显式转换。最后一中是隐式转换,1.5版本后支持的,也叫自动类型转换。
第二种方法明显“多此一举”追问

什么是显式什么是隐式啊?
网上很多人都说第四种转法是错误的.
但是我看挺简单的.到底能不能用啊

追答

显式不就是上面的嘛。你直接在做类型转换的操作。
第四种num+"",num是数值型,“”是字符串型。对两种不同类型的类型做+运算的时候,虚拟机会自动进行类型转换,这个转换对于代码来说,是‘隐式’的。确实好多人在用这样的方法把一般的简单类型转换成字符串,但要注意使用的JDK和JRE版本。另外有人说这种方式会有效率问题,我也不太认同。因为字符串会存到字符串池中,如果是用过的,就不会再次创建。

另外第一种方法如果你直接使用String.valueOf(null)是不行的。
但是:Integer num = null;
String.valueOf(num);
就没问题。

第2个回答  2012-05-23
第四种不是错误,可以这样转,只是这种转法在内存中等于多构建了2个对象,实在不划算
相似回答