++i效率更高,因为i++需要产生一个临时变量浪费一定的时间,而++i不会
java代码如下:
public class Main {
public static void main(String[] args) {
Integer a = 0;
int c = 0;
for (int i = 0; i <100; i++) {
c=a++;
}
Integer b = 0;
for (int i=0;i<100;i++){
c=++b;
}
}
}
转成字节码文件看下:
public class Main {
public Main() {
}
public static void main(String[] var0) {
Integer var1 = 0;
boolean var2 = false;
int var6;
for(int var3 = 0; var3 < 100; ++var3) {
Integer var4 = var1;
var1 = var1 + 1;
var6 = var4;
}
Integer var7 = 0;
for(int var8 = 0; var8 < 100; ++var8) {
var6 = var7 = var7 + 1;
}
}
}
我们可以清楚地看到 Integer var4 = var1;这句代码创建了一个临时变量,为什么要创建临时变量呢?因为要给c赋值的时候i++是先赋值再自增,所以需要一个临时变量记录此时i的值,之后再去自增。