首页 > 试题广场 >

仔细观察以上输出结果,你发现了什么?得出了什么结论?请对出现

[问答题]
以下有两段功能相似的代码,一个使用int,另一个使用Integer:

代码段一

代码段二

public   static int sumViaInteger(

Integer from , Integer   to) {

Integer result=0;

for(int   i=from;i<=to;i++){

result+=i;

}

return   result;

}

public   static int sumViaInt(int from , int to) {

int result=0;

for(int i=from;i<=to;i++){

result+=i;

}

return result;

}

以下代码测试这两个方法的执行时间:
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
long start = System.nanoTime();
sumViaInteger(1, 100);
long end = System.nanoTime();
System.out.println(i + "  sumViaInteger(1,100)所花时间:"
+ (end - start));
start = System.nanoTime();
sumViaInt(1, 100);
end = System.nanoTime();
System.out.println(i + "  sumViaInt(1,100)所花时间:" + (end - start));
}
}
以下是程序某次运行的输出结果:
0  sumViaInteger(1,100)所花时间:457051
0  sumViaInt(1,100)所花时间:3499
-------------------
1  sumViaInteger(1,100)所花时间:19948
1  sumViaInt(1,100)所花时间:1400
-------------------
2  sumViaInteger(1,100)所花时间:19598
2  sumViaInt(1,100)所花时间:1400
-------------------
仔细观察以上输出结果,你发现了什么?得出了什么结论?请对出现此运行结果的可能原因进行分析。
  • 进行相同的运算时,包装类比基本类在时间复杂度上多了几个量级。
  • 对相同的方法的调用,编译器会检查参数是否与之前调用相同,相同就使用之前的结果,而不是重新执行一遍。
编辑于 2017-06-16 22:32:56 回复(0)