如果有程序中的代码
int integer = 123;
String s = 123 + "";
看起来是不错的技巧,那为什么Java还要在String类提供valueOf方法呢?
究其原因,加法操作符在拼接字符串的时候,使用了效率较低的方法(如果是对字面值拼接可能没有效率问题)。
Java会创建StringBuilder,并且创建两个String引用,最终结果是sb.toString。
再进一步看,Java对整形转字符串是有优化的,关键的方法在Integer的getChars方法。
具体代码中是从高位到低位处理的。在对大整形处理时,采用两位一转换的方式处理,小整形一位一处理并使用乘法和位移代替除法(大整形应用除法会溢出)。
有机会可以再看看Java对其他诸如Double类型的toString具体做法。