Java面试题之二维数组性能问题
前不久去面试了一家公司,面试题是这样的:
?
一个二维数组赋值,有两种循环方法,问是第一种循环效率高,还是第二种循环效率高,代码如下:
?
?
?
由此可以看出,每次都是从一维数组开始根据内存地址查找,找到一维数组的地址后再找二维数组的地址,然后将此地址的实际值压栈,类似链表结构。第二种for循环因为首先要将数组a的地址入栈,然后遍历第一维数组,然后用aaload将数组当前下标存放的地址值入栈,由于第一维数组不同,所以需要频繁出栈入栈第一维数组,时间就被浪费在这里。