呵呵 我开始猜了一个是--快 但是我做测试结果也是--快 所以给分撒 package org.lrb;import java.util.Date;public class Ces { public static void main(String[] args) { for(int i = 100000; i > 0; i--) {
Date haha=new Date();
if(i==1){
System.out.println(haha); break; } }
/*for(int i = 1; i < 100001; i++) {
Date haha=new Date(); System.out.println(haha); if(i==100000){
如果非说哪个快
我认为应该是for(int i = 1; i < 100001; i++) {}
单从指令来看,由于无寄存器,都是栈操作,局部变量和常量弹栈后的比较再跳转,而且在虚拟机内部--和++都是inc的,指令复杂度貌似是一样的吧。
但是本人实验了下jdk1.5 win32
得到结果是,若上届(或者下界)较小 比如取楼主所讲或取10000,那么用--明显比++快 ,约十倍左右,倘若边界较大时这一差距会越来越小。当然实验的循环体是简单的浮点加,代码就不贴了。
期待高人解释
我开始猜了一个是--快
但是我做测试结果也是--快
所以给分撒
package org.lrb;import java.util.Date;public class Ces { public static void main(String[] args) { for(int i = 100000; i > 0; i--) {
Date haha=new Date();
if(i==1){
System.out.println(haha);
break;
}
}
/*for(int i = 1; i < 100001; i++) {
Date haha=new Date();
System.out.println(haha);
if(i==100000){
System.out.println(haha);
break;
}
} */
}}
java也可以类似方式分析。