求教一个运行效率问题 求教一个运行效率问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 2 效率高。至于累加,难道不该用等差数列的计算公式吗??(1 + n)× n / 2如果n很大会导致越界,考虑BigInteger 对不起,纠正一下。1 快。如果""+500两边都是常量,会被直接编译成“500”这个静态的字符串。但是,如果加号两边任何一个是动态值(比如函数调用)的话,那么使用+拼接,会导致StringBuilder的隐式参与最终执行的代码是String str = new StringBuilder(左边).append(右边).toString(); 非常感谢你的回答和解释。第二个说的很有道理。多谢提点。大概是我太拘泥于java语言的算法。而忽视了数学上的算法。 自己试了下,确实直接""+500会快些,换成""+x就会慢不少。而String.valueOf(x)稍慢于""+500,可能是因为valueOf里有个问号表达式的原因吧。测试代码: public static void main(String[] args) { Integer x = 500; long curMillis = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { String str = String.valueOf(x); } System.out.println("耗时:" + (System.currentTimeMillis() - curMillis)); curMillis = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { String str = "" + 500; } System.out.println("耗时:" + (System.currentTimeMillis() - curMillis)); curMillis = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { String str = "" + x; } System.out.println("耗时:" + (System.currentTimeMillis() - curMillis)); } maven依赖对象的jpa配置文件读取问题 appfuse2.0 构建 struts2.0 错误 无法连接数据库 大家看板桥写的Java设计模式,难道没有发现问题吗? 级联菜单 哪位高手帮我解决在EJB里面如何进行字符集转换? 打开IE出现6025错误 resin安装问题 J2EE 1.4 SDK的疑惑! myeclipse上跑个storm 的wordcount demo 本地模式报错,求解 我想删除字节数组byte【】前3个字节数据,应该如何操作 jsp页面导包出错Multiple annotations found at this line:The import dv cannot be
(1 + n)× n / 2
如果n很大会导致越界,考虑BigInteger
1 快。
如果""+500两边都是常量,会被直接编译成“500”这个静态的字符串。
但是,如果加号两边任何一个是动态值(比如函数调用)的话,那么使用+拼接,会导致StringBuilder的隐式参与
最终执行的代码是
String str = new StringBuilder(左边).append(右边).toString();
自己试了下,确实直接""+500会快些,换成""+x就会慢不少。而String.valueOf(x)稍慢于""+500,可能是因为valueOf里有个问号表达式的原因吧。
测试代码: public static void main(String[] args) {
Integer x = 500; long curMillis = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
String str = String.valueOf(x);
} System.out.println("耗时:" + (System.currentTimeMillis() - curMillis)); curMillis = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
String str = "" + 500;
}
System.out.println("耗时:" + (System.currentTimeMillis() - curMillis)); curMillis = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
String str = "" + x;
}
System.out.println("耗时:" + (System.currentTimeMillis() - curMillis));
}