如何统计装箱和拆箱操作的次数

时间:2021-06-13 21:49:41

标签: java autoboxing

我有一个这样的循环

        int length = 1000000000;
        Integer sum1 = 0;
        for (Integer i = 0; i < length; i++) {
            sum1  = sum1 + 1;
        }
        System.out.println(sum1);

这里如何统计装箱和拆箱操作的次数? 这是我猜的装箱和拆箱

拳击:

  1. i++i + 1Integer
  2. sum1 + 1 被装箱为整数

开箱:

  1. i < lengthi 拆箱到 int

我上面的说法正确吗?以及如何以编程方式计算装箱和拆箱操作的数量?

1 个答案:

答案 0 :(得分:0)

如果 sum1 总是加 1 并且在程序开始时总是零,那么 sum1 实际上是用 sum1 执行的装箱操作的次数。 sum1 上的操作更短:

--> sum1=sum1+1;-->sum1+=1-->sum1++;

所以如果sum1是用sum1执行的装箱操作的次数,那么我们可以假设用i++对<进行装箱操作的操作次数em>i 实际上是 i。 For 循环总是检查条件

i

,所以我们知道它会检查这个长度次。您可能认为它会迭代 lenth-1 次,但实际上它会检查并保持最后,而不是完整的条件。

所以我们可以得出结论:

number_unboxed_operations=长度, number_boxed_operations=i+sum1.

如果 sum1 上的操作确实不同(sum1+=2),我们可以问问自己条件成立的时间。

条件为真直到 i==length 所以对于 sum1 操作将被执行 lenth-1 次;