我有一个数组int[10][3] aaa;
1。访问aaa[0][0]的速度和访问aaa[9][0]的速度一样快吗?
2。访问aaa[9][0]的速度和访问aaa[9][2]的速度一样快吗?

解决方案 »

  1.   

    一样快。首先,"[]"是方法,其中的index是方法的参数,这和String.charAt(i)有些类似。当然,"[]"是特殊的方法,在执行速度上可能比一般方法有所优化。要得到数组元素的地址是其基地址a[0]与index的和,不管index是多少,都要执行这个加法运算,以得到元素地址。因为数组元素是不等长的,比如byte,integer等,寻址时可能还有乘法运算。所以对于每个元素的寻址时间应该是一致的。当然,先作一个判断,如果index为0,直接返回基地址的话,获得a[0]的速度会比其它元素快。但是这样一来,其它元素的寻址运算就都要额外加上一个比较运算。得不偿失。
      

  2.   

    赞同UnAgain()的说法,
    数组的[]应都要做一次计算,每次算法都是一次定位的。