Day_05【数组】

今日内容
    数组

数组的概念
    数组是一种容器,可以存储多个元素

    之前我们学习过的变量其实就是一种容器,但是因为一个变量只能存储一个数据,所有如果
    有多个数据需要存储,我就需要定义多个变量。变量足够多的时候,定义变量就太麻烦了,这时
    我们就出现了一种可以存储多个元素的容器,就是数组。

    特点:
        (1)数组是一种容器,可以存储"同一种数据类型"的多个元素
        (2)数组有整数索引(编号),索引的范围在0~数组的长度-1
        (3)数组存储的元素即可以是基本数据类型,也可以是引用数据类型
        (4)数组一经初始化长度就固定了

数组的定义
       数据类型[] 数组名;          // 推荐使用的方式
        举例:int[] array;

       数据类型 数组名[];
        举例:int array2[];

数组的初始化
    动态初始化:在初始化的时候给定数组的长度,由系统来赋予默认初始化值
        数据类型[] 数组名 = new 数据类型[数组的长度];

            格式举例:
                int[] arr = new int[3];

            格式解释:
               数据类型[] 数组名 = new 数据类型[数组的长度];
               左边
                   数据类型:规定了数组中能够存储的元素的数据类型
                   []:说明定义的是一个数组类型
                   数组名:给数组取一个名字,方便使用
               右边
                   new:是一个关键字,用于在内存中开辟一片内存空间,固定写法
                   数据类型:规定了数组中能够存储的元素的数据类型,和定义的时候的数据类型必须一模一样
                   []:说明定义的是一个数组
                   数组的长度:规定了数组能够存储的元素的个数

        数组中元素的默认初始值:
            整数类型(byte、short、int、long)      :0
            浮点类型(float、double)               :0.0
            布尔类型(boolean)                    :false
            字符类型(char)                       :'\u0000'
            引用数据类型                           :null

    静态初始化:在初始化的时候,给定数组的元素,由系统计算数组的长度
        标准格式
            数据类型[] 数组名 = new 数据类型[]{元素1,元素2,....};
            举例:
                int[] array = new int[]{10,20,30};

扫描二维码关注公众号,回复: 2465829 查看本文章

        简化格式
            数据类型[] 数组名 = {元素1,元素2,....};
            举例:
                int[] array = {10, 20, 30};


    课堂练习:
        (1)定义一个数组并初始化,数组类型是double类型,长度为5,其中的元素不确定               [动态初始化]
        (2)定义一个数组并初始化,数组的类型是byte类型,长度为3,其中的元素为10,15,20           [静态初始化的标准格式]
        (3)定义一个数组并初始化,数组的类型是String类型,长度为4,其中的元素为"hello","world","java","hehe" [静态初始化的简化格式]

数组的元素访问
    取值
        数据类型 变量名 = 数组名[索引];
    赋值
        数组名[索引] = 新值;


    课堂练习:
        定义一个数组并初始化,数组类型是double类型,长度为5,其中的元素不确定               [动态初始化]
        (1)取出该数组中所有元素的值并打印在控制台
        (2)给该数组中的索引为1和3的元素重新赋值

Java中的内存划分:
    栈:方法要执行在栈区中要开辟空间,局部变量是方法中的变量,随着方法都在栈区
        栈内存中的变量,一使用完立马消失
    堆:一切new出来的东西,比如数组、对象
        有地址值
        堆内存中的东西用完不是立马消失,消失有时机(垃圾回收机制)
    方法区
        .class文件

    本地方法栈:和操作系统相关
    寄存器:和CPU相关

数组中的两个常见错误(异常)
    数组索引越界异常
        ArrayIndexOutOfBoundsException

        产生的原因:
            操作的索引超出了数组的索引范围:0~数组的长度-1
        解决方式:
            让操作的索引在数组的索引范围内

    空指针异常
        NullPointerException

        产生的原因:
            直接给数组类型的引用赋值为null,而没有new
            还去使用它
        解决方式:
            给它补上new


    练习
        定义一个int[]数组,演示两种异常的发生。


获取数组的长度
    length属性
    int len = 数组名.length;

数组的常见操作
    1、数组的遍历:将数组中的元素按顺序依次取出来
        // 定义一个数组
        int[] arr = {3,1,5,8,9};
        // 遍历数组
        for(int i=0;i<arr.length;i++){// i在0~arr.length-1之间变化
            // i代表的就是索引值,每循环一次会依次增加1
            System.out.println(arr[i]);
        }

    2、数组元素求和:将数组的元素的值加总起来
        // 定义一个数组
        int[] array = {9,10,-2,5,3};

        // 求和变量
        int sum = 0;
        // 遍历求和
        for (int i = 0; i < array.length; i++) {
            // array[i]代表的就是每一个元素
            sum += array[i];
        }

        // 打印求和的结果
        System.out.println(sum);
    3、数组元素求最值(最大值和最小值):求出数组中的元素的最大值或者最小值
        // 定义一个数组
        int[] array = {9,10,-2,5,3};

        // 定义一个变量用于记录最大值
        int max = array[0];

        // 遍历比较,求出最大值
        for(int i=1; i<array.length; i++){
            if(array[i] > max){
                max = array[i];
            }
        }

        System.out.println("最大值为:"+max);

    4、数组的反转:将数组中存储的元素倒过来        1 2 3 -> 3 2 1


    5、数组元素查找:给定一个元素查找出该元素在数组中的索引位置
    6、数组的元素排序:按照一定的顺序(从小到大或者从大到小)对元素进行排列   {3,1,5,8,9} ->{1,3,5,8,9}
       冒泡排序
       选择排序


    练习:
        (1)定义一个数组,元素值自己确定,然后对这个数组的元素进行遍历
        (2)定义一个数组,元素值自己确定,然后将数组中的所有的元素值进行加总,最后打印出加总的结果

今日重点
    (1)说出什么是数组,数组的特点
    (2)能够使用动态初始化定义一个数组
    (3)能够使用静态初始化(标准格式和简化格式)定义一个数组
    (4)能够访问数组(取值和赋值)中的元素
    (5)了解数组的内存图
    (6)能够获取数组的长度,length属性
    (7)数组常见操作一:能够遍历数组(正着和倒着)
    (8)数组常见操作二:能够对数组的元素进行求和
    (9)数组常见操作三:能够对数组求最值(最大值和最小值)
    (10)数组常见操作四:能够对数组进行反转操作(思路一和思路二)
    (11)了解数组作为方法的参数和返回值
 

猜你喜欢

转载自blog.csdn.net/l531003231/article/details/81260333
今日推荐