day23课堂笔记

1、数组

1.1、数组的优点和缺点,并且要理解为什么。

  1. 第一:空间存储上,内存地址是连续的。<br /> 第二:每个元素占用的空间大小相同。<br /> 第三:知道首元素的内存地址。<br /> 第四:通过下标可以计算出偏移量。<br /> 通过一个数学表达式,就可以快速计算出某个下标位置上元素的内存地址,<br /> 直接通过内存地址定位,效率非常高。
  2. 优点:检索效率高。<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、对数组中存储引用数据类型的情况,要会画它的内存结构图。