day23课堂笔记
1、数组
1.1、数组的优点和缺点,并且要理解为什么。
第一:空间存储上,内存地址是连续的。<br /> 第二:每个元素占用的空间大小相同。<br /> 第三:知道首元素的内存地址。<br /> 第四:通过下标可以计算出偏移量。<br /> 通过一个数学表达式,就可以快速计算出某个下标位置上元素的内存地址,<br /> 直接通过内存地址定位,效率非常高。 优点:检索效率高。<br /> 缺点:随机增删效率较低,数组无法存储大数据量。<br /> 注意:数组最后一个元素的增删效率不受影响。
1.2、一维数组的静态初始化和动态初始化
静态初始化:<br /> int[] arr = {1,2,3,4};<br /> Object[] objs = {new Object(), new Object(), new Object()};<br /> 动态初始化:<br /> int[] arr = new int[4]; // 4个长度,每个元素默认值0<br /> Object[] objs = new Object[4]; // 4个长度,每个元素默认值null
1.3、一维数组的遍历
for(int i = 0; i < arr.length; i++){<br /> System.out.println(arr[i]);<br /> }
1.4、二维数组的静态初始化和动态初始化
静态初始化:<br /> int[][] arr = {<br /> {1,2,34},<br /> {54,4,34,3},<br /> {2,34,4,5}<br /> };
Object[][] arr = {<br /> {new Object(),new Object()},<br /> {new Object(),new Object()},<br /> {new Object(),new Object(),new Object()}<br /> };<br /> 动态初始化:<br /> int[][] arr = new int[3][4];<br /> Object[][] arr = new Object[4][4];<br /> Animal[][] arr = new Animal[3][4];<br /> // Person类型数组,里面可以存储Person类型对象,以及Person类型的子类型都可以。<br /> Person[][] arr = new Person[2][2];<br /> ....
1.5、二维数组的遍历
for(int i = 0; i < arr.length; i++){ // 外层for循环负责遍历外面的一维数组。<br /> // 里面这个for循环负责遍历二维数组里面的一维数组。<br /> for(int j = 0; j < arr[i].length; j++){<br /> System.out.print(arr[i][j]);<br /> }<br /> // 换行。<br /> System.out.println();<br /> }
1.6、main方法上“String[] args”参数的使用(非重点,了解一下,以后一般都是有界面的,用户可以在界面上输入用户名和密码等参数信息。)
1.7、数组的拷贝:System.arraycopy()方法的使用
数组有一个特点:长度一旦确定,不可变。<br /> 所以数组长度不够的时候,需要扩容,扩容的机制是:新建一个大数组,<br /> 将小数组中的数据拷贝到大数组,然后小数组对象被垃圾回收。
1.8、对数组中存储引用数据类型的情况,要会画它的内存结构图。