第4章-第2节-Java中的数组相关知识点

1、一维数组

1)、数组使用过程中可能出现的问题

常见的运行时异常:
1).java.lang.ArrayIndexOutOfBoundsException:    数组下标越界异常
2).java.lang.NullPointerException:        空指针异常


2)、参数传递

两种方式:

方式一:普通常量值传递

方法的形参是基本类型,调用方法执行的过程中,将基本类型数据(常量值)传递给到形参位置;
理解:将基本类型数据copy一份给到方法的形参,有两种基本类型数据,你一份、我一份,彼此独立;
注意:其中任一一份数据内容受到了变化,不会影响到另一份数据


方式二:引用地址值传递

方法的形参是引用类型,调用方法执行的过程中,将引用类型数据(地址值)传递给到形参位置;
理解:将引用类型数据copy一份给到方法的形参,两处变量都握着同一份地址,意味着都指向同一个堆中对象;
注意:通过其中一方地址去操作堆中对象,改变了对象内部的数据内容;再通过另一方地址进行访问,
      看到的一定是改动以后的效果


3)、数组常用操作

再谈数组遍历

需求:
    ①.数组长度从键盘读入
    ②.数组元素赋值从键盘读入
    ③.遍历打印数组元素
      效果如下:
        88,37,-12,0,100,69

要求:结合2个自定义方法实现

自定义方法:得到int数组        方法名:getArray
实现:①、②
两个环节:
    1).返回值?    有,int[]类型
    2).形参?    没有

自定义方法:遍历打印数组元素    方法名:printArray
实现:③
两个环节:
    1).返回值?    没有,void
    2).形参?    有,int[]类型


第一波:最值(最大、最小)、总和、平均值、反转

第二波:排序、查找


排序操作:

核心:升序(小 -> 大)、降序(大 -> 小)

选择排序之升序操作

需求:
    ①.数组长度从键盘读入
    ②.数组元素赋值通过随机数实现    范围:[1,100]
    ③.遍历打印数组元素
    ④.选择排序之升序操作

要求:3个自定义方法实现

自定义方法:得到int数组        getArray
实现:①、②
两个环节:
    1).返回值?    有,int[]类型
    2).形参?    没有

自定义方法:遍历打印数组元素    printArray
实现:③
两个环节:
    1).返回值?    没有,void
    2).形参?    有,int[]类型

自定义方法:选择排序之升序操作    selectSort
实现:④
两个环节:
    1).返回值?    没有,void
    2).形参?    有,int[]类型


查找操作:

作用:通过数组名、元素内容找到对应的下标

一般查找法:

前提条件/要求:查找操作之前,不可以对元素先进行排序操作

2、二维数组

一维数组:一行多列
二维数组:多行多列    称为:二维表(table)

场景一:存储全班学员的考试成绩

解决:使用一维数组实现

场景二:将全班分为若干个组,每个组若干名学员,以组为单位存储各自组员的成绩,最后统一管理

解决:使用二维数组实现


定义格式:

两种情况:

情况一:静态初始化

模板:
    数据类型[][] 数组名 = new 数据类型[][]{一维数组1,一维数组2,...,一维数组n};

    简化形式:

    数据类型[][] 数组名 = {一维数组1,一维数组2,...,一维数组n};

举例:
    需求:将全班分为3个组,每个组3名学员,以组为单位存储各自组员的成绩,最后统一管理

    代码:
        int[][] scores = {{62,88,75},{100,51,80},{80,60,100}};

    内存:
        步骤一:创建二维数组容器,元素赋默认值
            二维数组:{null,null,null}        地址:0x1234

        步骤二:创建3个一维数组容器,元素赋默认值
            一维数组1:{0,0,0}            地址:0x111
            一维数组2:{0,0,0}            地址:0x222
            一维数组3:{0,0,0}            地址:0x333

        步骤三:为每个一维数组元素进行显示赋值操作
            一维数组1:{62,88,75}              地址:0x111
            一维数组2:{100,51,80}            地址:0x222
            一维数组3:{80,60,100}            地址:0x333

        步骤四:将二维数组每个元素关联对应一维数组的地址
            二维数组:{0x111,0x222,0x333}                                地址:0x1234

            变相理解:

            二维数组:{{62,88,75},{100,51,80},{80,60,100}}        地址:0x1234


情况二:动态初始化

两种情况:

情况一:行和列都明确

模板:
    环节一:创建二维数组&多个一维数组容器,并且将一维数组地址关联到二维数组元素位置
    数据类型[][] 数组名 = new 数据类型[行数/二维数组元素的个数/一维数组的个数][列数/每个一维数组元素的个数];
    
    环节二:为一维数组元素进行显示赋值操作
    数组名[行][列] = 值;


举例:
    需求1:将全班分为3个组,每个组3名学员,以组为单位存储各自组员的姓名,最后统一管理
    需求2:第一组第一名学员:"张三"
                 第二组第二名学员:"李四"
                 第三组最后一名学员:"王五"
    需求3:得到二维数组的长度以及第一个一维数组的长度,分别打印看效果
    
    代码:
        String[][] names = new String[3][3];
        names[0][0] = "张三";
        names[1][1] = "李四";
        names[2][2] = "王五";

        int size = names.length;              //二维数组长度
        int size2 = names[0].length;        //第一个一维数组长度

    
    内存:
        步骤一:创建二维数组容器,元素赋默认值
            二维数组:{null,null,null}        地址:0x1234

        步骤二:创建3个一维数组容器,元素赋默认值
            一维数组1:{null,null,null}        地址:0x111
            一维数组2:{null,null,null}        地址:0x222        
            一维数组3:{null,null,null}        地址:0x333

        步骤三:将3个一维数组的地址关联到二维数组的元素位置
            二维数组:{0x111,0x222,0x333}        地址:0x1234

            变相理解:
            
            二维数组:{{null,null,null},{null,null,null},{null,null,null}}                     地址:0x1234

        步骤四;存入学员姓名

            二维数组:{{"张三",null,null},{null,"李四",null},{null,null,"王五"}}        地址:0x1234


情况二:行明确,列不明确

模板:
    数据类型[][] 数组名 = new 数据类型[行数/二维数组元素的个数/一维数组的个数][];

本电子书目录:《Java基础的重点知识点全集》

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zwarwolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值