标签:就是 rar ++ div obj click col display onclick
1、数组在初始化的时候要指定数组的大小,ArrayList本质也是数组,不过是一个动态的数组,大小是可以变化的
数组的大小:length;
ArrayList的大小:size。
2、数组很好理解,ArrayList是动态数组,究竟是怎么回事?我研究了一下
1 List<Integer> list = new ArrayList<>(); 2 for(int i = 0;i< 37;i++) { 3 list.add(i); 4 }
对这段代码进行断点调试,然后观察List的变化:
list 刚初始化的时候,list本质是Object[0],
i ∈[0,9],list本质是Object[10],从list.add(0)的时候list由原本的Object[0]→Object[10],
(注意看Object[0] id=34,而Object[10] id=39)
一直到第十次for循环,我们看到size在一次增加,而Object数组的length一直是10,没变。
(直到此时Object[10] id=39,没有变化)
下面变化来了!当进入第11次循环体的时候,神奇的是Object数组的length变成了15!!!
(同时Object[15] id=62,变化了)
(直到第15次循环,Object[15] id=62 没变化,下面依次在Obiect[22]、Object[33]、Object[49]的时候id变化了)
由上图的变化,可以看出ArrayList就是动态的数组,每当list真实的size达到Object的length的时候,又出来一个扩容、全新的Object数组(暂时不知,每一次扩容大小是什么规则),但至少满足用户需求。就这一点相较常规的数组来说,ArrayList更加灵活。
处女篇,欢迎指正~
标签:就是 rar ++ div obj click col display onclick
原文地址:https://www.cnblogs.com/magic-garden/p/10601931.html