第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基础的重点知识点全集》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226671.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初级数据结构(五)——树和二叉树的概念

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;四&#xff09;——队列 | NULL 下一篇-> 1、树结构&#xff08;Tree&#xff09; 1.1、树结构的特点 自然界中的树由根部开始向上生长&#xff0c;随机长出分支&…

开源数据集下载地址

cvmart https://www.cvmart.net/dataSets 目标检测&#xff1a;https://www.cvmart.net/dataSets/detail/707人脸识别&#xff1a;https://www.cvmart.net/dataSets/detail/888CIFAR&#xff1a;https://www.cvmart.net/dataSets/detail/774 voc yolo代码中data目录&#x…

汇编语言学习(1)

更好的阅读体验&#xff0c;请点击 汇编语言学习 | YinKais Blog 简介 我为什么要学汇编 因为想在寒假手写一下操作系统玩玩&#xff0c;所以提前学一学汇编&#xff0c;到时候放假就可以直接上手写了。 什么是汇编语言 由于处理器只能理解机器语言指令&#xff0c;即 0 和…

第十七章 : Spring Boot 集成RabbitMQ(一)

第十七章 : Spring Boot 集成RabbitMQ(一) 前言 本章介绍RabbitMQ的核心概念和消息中间件中非常重要的协议——AMQP协议,然后介绍Direct、Topic、Headers、Fanout等交换机的作用和特点;RabbitMQ的五种消息发送模式-简单队列、工作队列、发布订阅、路由、广播;以及Rabbi…

对自己的博客网站进行DOS攻击

对自己的博客网站进行DOS攻击 先说明一点,别对别人的网站进行ddos/dos攻击(dos攻击一般短时间攻击不下来),这是违法的,很多都有自动报警机制,本篇博客仅用于学习,请勿用于非法用途 安装kaili Linux 进入KALI官网,下载iso镜像文件 vmware新建虚拟机,选择自定义 点击下一步 …

C#基础——面向对象(封装 继承 多态)

C# 属于面向对象编程&#xff0c;所谓"万物皆对象"。 面向对象编程的三大特性&#xff1a;封装、继承、多态。 1、封装&#xff1a;封装是一种将数据和方法包含在类中的机制&#xff0c;以避免外部代码直接访问和修改类的内部数据。可以使用访问修饰符&#xff08;…

ROS-ROS运行管理-工作空间覆盖;节点、话题、参数名称重名

文章目录 一、工作空间覆盖二、节点名称重名2.1 rosrun设置命名空间与重映射2.2 launch文件设置命名空间与重映射2.3 编码设置命名空间与重映射 三、话题名称设置3.1 rosrun设置话题重映射3.2 launch文件设置话题重映射3.3 编码设置话题名称 四、参数名称设置4.1 rosrun设置参数…

Redis部署文档

Redis部署文档 简介 这份文档旨在指导如何在Docker环境中部署Redis。 步骤 1. 安装Docker和Docker Compose 确保在部署之前已经安装了Docker和Docker Compose。 2. 创建Docker Compose文件 在项目根目录创建一个docker-compose.yaml文件&#xff0c;并将以下内容复制到文…

[笔记] wsl2 下使用 qemu/grub 模拟系统启动(多分区)

首先创建一块虚拟硬盘: dd bs512 count204800 if/dev/zero ofhd.img然后使用 losetup -f 将其关联为本地回环设备 losetup -f hd.img # 关联 hd.img 到空闲回环设备上 losetup -a /dev/loop0: [2080]:409 (/root/code/demo05/hd.img) # 查看刚刚关联到了哪里,这里关联到了 /d…

Github与Gitlab

学习目标 能够使用GitHub创建远程仓库并使用能够安装部署GitLab服务器能够使用GitLab创建仓库并使用掌握CI/CD的概念掌握蓝绿部署, 滚动更新,灰度发布的概念 GitHub是目前最火的开源项目代码托管平台。它是基于web的Git仓库&#xff0c;提供公有仓库和私有仓库&#xff0c;但私…

使用Go实现一个百行聊天服务器

前段时间, redis作者不是整了个c语言版本的聊天服务器嘛, 地址, 代码量拢共不过百行. 于是, 心血来潮下, 我也整了个Go语言版本. 简单来说就是实现了一个聊天室的功能. 将所有注释空行都去掉, 刚好100行实现. 废话不多说, 先上代码: package mainimport ("fmt"&quo…

SoC中跨时钟域的信号同步设计(单比特同步设计)

一、 亚稳态 在数字电路中&#xff0c;触发器是一种很常用的器件。对于任意一个触发器&#xff0c;都由其参数库文件规定了能正常使用的“建立时间”&#xff08;Setup time&#xff09;和“保持时间”&#xff08;Hold time &#xff09;两个参数。“建立时间”是指在时钟…

【MySQL学习之基础篇】多表查询

文章目录 1. 多表关系1.1. 一对多1.2. 多对多1.3. 一对一 2. 多表查询概述2.1. 数据准备2.2. 概述 3. 查询的分类3.1. 内连接查询3.2. 外连接查询3.3. 自连接3.3.1. 自连接查询3.3.2. 联合查询 3.4. 子查询3.4.1. 概述3.4.2. 标量子查询3.4.3. 列子查询3.4.4. 行子查询3.4.5. 表…

python+requests+pytest 接口自动化实现

最近工作之余拿公司的项目写了一个接口测试框架&#xff0c;功能还不是很完善&#xff0c;算是抛砖引玉了&#xff0c;欢迎各位来吐槽。 主要思路&#xff1a; ①对 requests 进行二次封装&#xff0c;做到定制化效果 ②使用 excel 存放接口请求数据&#xff0c;作为数据驱动 ③…

LeetCode(60)K 个一组翻转链表【链表】【困难】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; K 个一组翻转链表 1.题目 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xf…

Modbus转Profinet网关使用方法

Modbus转Profinet网关&#xff08;XD-MDPN100/200&#xff09;是用于将Modbus协议和Profinet协议进行转换并进行通迅的设备。Modbus转Profinet网关&#xff08;XD-MDPN100/200&#xff09;无论是新项目还是改造项目都可轻松配置完成通迅互联。 正确的安装和配置对于确保设备的正…

低代码核心能力详解:简化应用开发的新思路

低代码平台作为一种快速地应用开发解决方法&#xff0c;为中小企业实现数字化转型提供了机会。但是&#xff0c;对于一些刚开始触碰低代码平台的企业来说&#xff0c;了解其核心能力是很重要的。本文将详细分析低代码平台的核心能力&#xff0c;并在挑选低代码平台以前为中小企…

云原生之深入解析OOM和CPU节流

一、前言 使用 Kubernetes 时&#xff0c;内存不足 (OOM) 错误和 CPU 节流是云应用程序中资源处理的主要难题&#xff0c;这是为什么呢&#xff1f;云应用程序中的 CPU 和内存要求变得越来越重要&#xff0c;因为它们与云成本直接相关。通过 limits 和 requests &#xff0c;可…

航带模式拍完之后用重建大师跑出来的模型是弧形的,怎么处理?

答&#xff1a;空三设置-更多设置-定位方式中选择pos高精度&#xff0c;再跑一下看看。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0c;输入倾斜照片&#xff0c;激光点云&#xff0c;POS信息及像控点&#xff0c;输出高精度彩色网格模型&a…

k8s-Pod

1、Pod 简介&#xff1a; (1) 概念&#xff1a; Pod 是 Kubernetes 中创建和管理的&#xff0c;最小的可部署的计算单元。Pod中存储了一组&#xff08;一个或多个&#xff09;容器&#xff0c;以及怎样运行这些容器的声明&#xff0c;这些容器共享存储、网络和环境&#xff0…