String.valueOf(float ) 快还是 float + "" 快?

将浮点数字转换成字符串的两种方式,哪一种更快一些?

阅读 4k
4 个回答

分以下两种情况:

  1. floatValue为常量时,floatValue + ""将被编译优化成String,效率很高;

  2. floatValue为变量时,floatValue + ""将被编译成new StringBuilder(floatValue).append("").toString();效率略低一些。

可参考:
http://www.java67.com/2015/05...

clipboard.png

后续几次结果

''+float程序运行时间:7511137236nm
String.valueof(float)’ 程序运行时间:4401233361

证明Valueof(float)的效率高点~

而 String.valueof()调用了 FloatingDecimal.toJavaFormatString(f)

public String toJavaFormatString() {
char result[] = (char[])(perThreadBuffer.get());
int i = getChars(result);
return new String(result, 0, i);
}

理论上肯定是String.valueOf(float)会更快。

因为float + ""会被编译为

StringBuilder sb = new StringBuilder();
sb.append(f);
sb.append("");
sb.toString();

做的事情更多,消耗自然也会更多。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题