黑马程序员技术交流社区

标题: Day5笔记 [打印本页]

作者: lly190144994    时间: 2016-4-19 19:13
标题: Day5笔记
DAY5
1. 数组
        定义: 存储多个同一种数据类型的元素的集合(容器).
        好处: 元素会具备索引,方便操作.
        特点:
                1) 可以存储基本数据类型, 也可以存储引用数据类型.
                2) 一个数组只能存放同一种数据类型.
                3) 数组的长度固定.
               
        格式:
                元素类型[] 数组名 = new 元素类型[长度];
               
        直接打印数组的引用:
                看到数组在内存中的地址值的十六进制表示形式.
获取元素格式:
                数组名[索引]
                        备注:索引是从0开始的.

3. 内存
        栈:
                栈的特点:先进后出(弹夹)
                局部变量 -- 方法的参数中的变量或者方法体中变量
                特点:使用完毕自动消失.
       
        堆:
                new 建立的实例
                都有默认值:
                        整形 : 0
                        浮点型 : 0.0
                        字符型 : '\u0000' (空字符'')
                        boolean : false
                        引用数据类型 : null
                会在变成垃圾后(没用引用指向),被垃圾回收器不定时(自动)的回收.

                注意:
                        每new一次,申请的内存空间的地址值都是不一样的.
                        多个引用可以指向同一个实例(对象)
                       
4. 数组的定义方式
        静态初始化:
                数据类型[] 变量名 = new 数据类型[]{元素1, 元素2, 元素3, ...};
        简写:
                数据类型[] 变量名 = {元素1, 元素2, 元素3, ...};
数组操作的常见问题:
                A:数组越界异常。访问了不存在的索引。
                        ArrayIndexOutOfBoundsException
                       
                B:空指针异常。一个实例(对象)已经不存在了,还去访问它的内容。
                                NullPointerException
5. 数组常见操作
        1) 遍历
                数组有一个属性,可以获取数组的长度
                数组名.length;
                for (int x = 0; x < arr.length; x++)
                {
                        System.out.println(arr[x]);
                }
        2) 数组操作之获取最值
                思路:
                        1) 定义变量,记录每次比较后较大的值.
                        2) 遍历数组,拿到每个元素,与变量记录的值进行比较,如果发现遍历到的值更大,就把这个值赋给变量.
                        3) 遍历结束,变量就是记录的最大值.
               
                public static int getMax(int[] arr) {
                        int maxValue = arr[0];
                        for (int x = 1; x < arr.length; x++) {
                                if (arr[x] > maxValue) {
                                        maxValue = arr[x];
                                }
                        }
                        return maxValue;
                }
                               
        3) 基本查找
                思路:
                        1)遍历数组,拿每一个元素与想找的值进行比较,一旦匹配,返回该值索引.
                        2)遍历结束,如果没有,返回-1.
                public static int search(int[] arr, int key) {
                        for (int x = 0; x < arr.length; x++) {
                                if (arr[x] == key) {
                                        return x;
                                }
                        }
                        return -1;
                }
       
6. 二维数组

        定义格式1: 数据类型[][] 变量名 = new 数据类型[n][m];
                二维数组中存储的其实是每一个一维数组的地址值.
       
        定义格式2: 数据类型[][] 变量名 = new 数据类型[n][];
                                再对每一个一维数组进行初始化
                               
        定义格式3: 数据类型[][] 变量名 = { {1,2},{3,4,5} ,{6,7,8,9} ,{0} };

        遍历二维数组的思路:
                外循环遍历二维数组,得到每一个一维数组,内循环遍历一维数组.
        注意事项:
                数组的长度不要数.通过数组的length属性获取.
               
7.形参的改变会影响实参吗
        形参 -- 方法声明中的参数
        实参 -- 实际参与运算的参数
                对于基本数据类型,不会影响,因为传递的是值.
                对于引用数据类型,会影响,因为传递的是地址值,是多个引用指向了同一个对象.
                (有特例 -- String Integer)
       




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2