Java基础复习笔记 第05章:数组

1. 数组的概述(理解)

1. 数组的理解概念:
数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,
并通过编号的方式对这些数据进行统一管理。简称:多个相同类型的数据的组合Java中的容器:数组、集合框架(用于存储不同特点的多个数据)2. 几个相关的概念
> 数组名(即为容器的名称)
> 元素 (即为数组中具体的一个个的数据)
> 数组的长度(容器中元素的个数)
> 数组的角标、下标、下角标、索引、index (即为数组中元素的具体位置。从0开始)3. 数组的特点:
- 数组本身是`引用数据类型`,而数组中的元素可以是`任何数据类型`,包括基本数据类型和引用数据类型。
- 创建数组对象会在内存中开辟一整块`连续的空间`。占据的空间的大小,取决于数组的长度和数组中元素的类型。
- 数组中的元素在内存中是依次紧密排列的,有序的。
- 数组,一旦初始化完成,其长度就是确定的。
- 数组的`长度一旦确定,就不能修改`。
- 我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
- 数组名中引用的是这块连续空间的首地址。4. 复习:变量按照数据类型的分类
4.1 基本数据类型:byte \ short \ int \ long ;float \ double ;char ;boolean
4.2 引用数据类型:类、数组、接口; 枚举类型、注解类型、记录类型(Record)5. 数组的分类
5.1 按照元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
5.2 按照数组的维数来分:一维数组、二维数组、....

2. 一维数组的使用(重点)

(6个基本点)
> 数组的定义:静态初始化、动态初始化
> 数组元素的表示:使用角标,角标从0开始,到数组的长度-1结束。
> 数组的长度:length
> 遍历数组:for循环
> 数组元素的默认值:记住。后续类中属性的默认值也如此。
> 数组的内存解析(难点)---> 具体图示见chapter06章节的module中即可。

3. 二维数组的使用(熟悉)

  • 二维数组的理解
> 角度1:一个一维数组又作为了另一个数组arr的元素。则数组arr就称为二维数组。
> 角度2:一个数组arr1的元素,仍是是一个数组,则arr1称为二维数组> 数组,属于引用数据类型;数组的元素也可以是引用数据类型。--> 数组的元素,还可以是数组。> 说明:其实Java中不存在二维、三维、..数组,只是将一个上述的arr或arr1称为是二维数组。> 区分:外层元素、内层元素
  • 基本内容
二维数组的使用(6个基本点)
> 数组的定义
> 数组元素的调用
> 数组的长度
> 数组的遍历
> 数组元素的默认初始化值(稍难)
> 数组的内存解析(难点)---> 具体图示见chapter06章节的module中即可。
  • 数组元素的默认值
1. 二维数组元素的默认初始化值
1.1 动态初始化方式1:(比如:int[][] arr = new int[3][4])外层元素:存储的是地址值。(具体来说,就是外层元素指向的一维数组的地址值)内层元素:与一维数组元素的默认值相同。> 整型:0> 浮点型:0.0> 字符型:0 或 '\u0000'> 布尔型:false> 引用类型:null1.2 动态初始化方式2:(比如:int[][] arr = new int[3][])
外层元素:null
内层元素:不存在。一旦调用会报异常(NullPointerException)

4. 数组的常用算法(熟练)

  • 算法常用操作1
1. 数值型数组特征值统计
这里的特征值涉及到:平均值、最大值、最小值、总和等2. 数组元素的赋值(实际开发中,遇到的场景比较多)3. 数组的复制、赋值4. 数组的反转
  • 算法常用操作2
1. 数组的扩容与缩容2. 数组元素的查找(或搜索)
顺序查找:> 优点:简单,好理解,数组没有任何的前提限制。(比如:有序)> 缺点:相较于二分法查找更慢一些。二分法查找:> 优点:相较于顺序查找,更快。O(logN)> 缺点:必须此数组有序。3. 排序算法
3.1 排序算法的衡量标准:
> 时间复杂度:更为关心的标准。Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n^2)<Ο(n^3)<…<Ο(2^n)<Ο(n!)<O(n^n)。
> 空间复杂度:常出现以空间换时间的做法。> 稳定性3.2 排序的分类:内部排序、外部排序内部排序的具体算法:十种。我们需要关注的几个排序算法:
> 冒泡排序:简单、容易实现;企业笔试中容易考。时间复杂度:O(n^2)。要求大家可以手写。
> 快速排序:快速、开发中需要排序情况下的首选。时间复杂度:O(nlogn)。要求大家至少可以说明其实现思路。

5. Arrays:数组的工具类(熟悉)

1. Arrays类所在位置
java.util.Arrays2. 作用:
封装了针对数组的常用操作。比如:排序、二分查找、比较数组是否相等、遍历等。3. 常用方法:
sort(int[] arr) / binarySearch(int[] arr,int target) / toString(int[] arr)

6. 小结:数组中的常见异常

1. 数组的使用中常见的异常小结
> ArrayIndexOutOfBoundsException:数组角标越界异常> NullPointerException:空指针异常2. 出现异常会怎样?如何处理?> 一旦程序中出现异常,且没有处理的情况下,程序就终止执行。> 目前大家编程时,如果出现上述异常。回来根据异常的提示,修改代码,确保后续运行不再出现。

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

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

相关文章

IC设计企业如何实现安全便捷的芯片云桌面跨网摆渡?

IC设计企业&#xff0c;主要专注于集成电路的设计。这些企业通常包括集成电路、二极管、三极管和特殊电子元件等产品的设计和生产。IC设计企业在其运营和产品设计过程中&#xff0c;会涉及和产生多种文件&#xff0c;如&#xff1a; 项目需求文档&#xff1a;这是项目启动的基础…

持续总结中!2024年面试必问 100 道 Java基础面试题(四十九)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 100 道 Java基础面试题&#xff08;四十八&#xff09;-CSDN博客 九十七、请解释Java中的synchronized和volatile关键字及其用途 在Java中&#xff0c;synchronized和volatile都是用于控制线程对共享资源访问的关…

停车场车位引导管理系统工作原理是什么,由哪些软硬件设备组成?

在现代城市中&#xff0c;随着汽车保有量的持续增长&#xff0c;停车难成为了许多城市面临的共同问题。有效管理停车场资源&#xff0c;提高车位利用率&#xff0c;减少寻找停车位的时间&#xff0c;对于缓解交通拥堵、提高城市运行效率具有重要意义。车位引导管理系统正是为了…

谷歌举办Gemini API开发者大赛;ChatGPT iOS版更新支持中文

&#x1f989; AI新闻 &#x1f680; 谷歌举办Gemini API开发者大赛&#xff0c;大奖1981款电动DeLorean 摘要&#xff1a;IT之家 5 月 15 日消息&#xff0c;在 2024 年谷歌 I/O 开发者大会上&#xff0c;谷歌宣布举办 Gemini API 开发者大赛&#xff0c;主要面向个人开发者…

Git commit-msg 提交模板配置

提交样板文件 template.txt [简述]: [解决方案]: [关联]:以命令的方式配置 git config --global commit.template ~/template.txt 执行完命令&#xff0c;多了以下内容 [commit]template C:/Users/Administrator/template.txtgit配置文件中手动配置 C:\Users\Administrator.…

24长三角数学建模ABC题已出!!!

需要ABC题资料的宝子们可以进企鹅 赛题如下&#xff1a; 赛道 A&#xff1a;“抢救”落水手机 上有天堂&#xff0c;下在苏杭&#xff1b;五一假期&#xff0c;杭州西湖、西溪湿地、京杭大运河等著名 景点&#xff0c;游人如织&#xff0c;作为享誉国内外的旅游胜地&#xff0…

Linux mkdir命令参数和选项

Linux mkdir命令参数和选项 在Linux系统中&#xff0c;mkdir命令是一个非常重要的命令&#xff0c;它用于创建新的目录。在这篇博客中&#xff0c;我们将深入探讨mkdir命令的参数和选项&#xff0c;希望能帮助读者更好地理解和使用这个命令。 1. mkdir命令的基本用法 mkdir命…

图形程序复用新纪元 探讨云库安全分享计划

在公司的开放式办公室中&#xff0c;卧龙与凤雏相邻而坐。周围的同事们都在忙碌地工作&#xff0c;键盘敲击声不绝于耳。卧龙眉头紧锁&#xff0c;全神贯注地调试着复杂的代码&#xff0c;仿佛在挑战编程世界的极限。而凤雏则在完成了一段代码编写后&#xff0c;轻松地伸展着身…

联丰策略股票官网分析A股三大指数集体收跌,超3800只股票下跌

查查配今日A股三大指数集体收跌。沪指低开低走,午后A股上了微博热搜。 联丰策略拥有一支由知名互联网公司和国内证券金融机构的行业专家组成的一流运营团队。凭借他们在互联网产品开发和金融风险管理方面的丰富经验,我们的团队致力于为客户提供专业和个性化的证券交易服务。 截…

Java环境搭配(一)JDK下载以及介绍、path环境变量配置

目录 JDK Development Kit &#xff08;JDK&#xff09; 下载 JDK介绍 &#xff1a; JDK 包括以下主要组件 配置path环境变量 在cmd上打印Helloworld JDK Development Kit &#xff08;JDK&#xff09; 下载 下载官方地址 www.oracle.com 进入网址后&#xff1a; 点击产…

数据仓库之StarRocks

官方文档 简介 Palo&#xff0c;中国的互联网公司百度开发并开源的&#xff0c;后更名为doris。StarRocks是一款由doris的一个分支演化而来的、开源分布式列式存储数据库。旨在提供高性能、高可靠性和低延迟的大数据分析和查询服务。 特点 列式存储 StarRocks使用列式存储…

SpringAI应用开发

一、人工智能简述 四次工业革命推动了人类社会发展和变革&#xff1a; 蒸汽时代&#xff0c;发生在18世纪60年代~19世纪中期&#xff08;大约是1760年到1860年&#xff09;&#xff0c;这一时期的特点是机械化生产和大规模生产。电气时代&#xff0c;发生在19世纪下半叶~20世纪…

【C语言深度解剖】(12):C语言库函数的学习和模拟实现,一篇文章就够了!

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多C语言深度解剖点击专栏链接查看&…

使用Python实现深度学习模型:自动编码器(Autoencoder)

自动编码器&#xff08;Autoencoder&#xff09;是一种无监督学习的神经网络模型&#xff0c;用于数据的降维和特征学习。它由编码器和解码器两个部分组成&#xff0c;通过将输入数据编码为低维表示&#xff0c;再从低维表示解码为原始数据来学习数据的特征表示。本教程将详细介…

编译gdb:在x86虚拟机上,加载分析arm程序及崩溃

目标 在X86虚拟机上&#xff0c;加载arm程序及崩溃。 最早我想的是编译一个arm版本的&#xff0c;在虚拟机上显然不能使用。 后来同事跟我说&#xff0c;可以编译一个在虚拟机上&#xff0c;分析arm的gdb&#xff0c;我觉得好神奇。事实证明确实可以。 首先不能使用已编译的…

【Maven】属性

Maven中的属性&#xff08;Properties&#xff09;是pom.xml文件中用于存储配置信息的元素。这些属性可以是项目级的、用户级的或者系统级的&#xff0c;并且可以在整个pom.xml文件中通过${属性名}的格式进行引用。Maven属性为配置管理提供了很大的灵活性。 以下是Maven中不同类…

第十七篇:数据库性能优化的数学视角:理论与实践的融合

数据库性能优化的数学视角&#xff1a;理论与实践的融合 1. 引言 在现代信息技术快速发展的背景下&#xff0c;数据库性能优化已经成为计算机科学领域的一个热点问题。随着数据量的爆炸式增长和用户需求的多样化&#xff0c;数据库系统所承载的数据处理任务变得越来越复杂&…

Redis第17讲——Redis zset结构实现滑动窗口限流

一、什么是滑动窗口限流 滑动窗口限流是一种流量控制策略&#xff0c;用于控制在一定时间内允许执行的操作数量或请求频率。它的工作方式类似于一个滑动时间窗口&#xff0c;对每个时间窗口的请求数量进行计数&#xff0c;并根据预先设置的限流策略来限制或调节流量&#xff0…

[muduo网络库]——muduo库InetAddress类(剖析muduo网络库核心部分、设计思想)

接着之前我们[muduo网络库]——muduo库EventLoopThreadPool类&#xff08;剖析muduo网络库核心部分、设计思想&#xff09;&#xff0c;我们接着看完除去TcpServer的最后一个InetAddress类。InetAddress 类是 muduo 网络库中的一个重要类&#xff0c;用于表示网络中的 IP 地址和…

maven deploy项目发布到中央仓库GPG签名失败signing failed: No secret key

maven deploy项目发布到中央仓库GPG签名失败signing failed: No secret key 执行操作 在我执行命令打包项目到中央仓库时失败 mvn clean deploy错误信息 [INFO] --- gpg:3.1.0:sign (sign-artifacts) LocalCache --- [INFO] Signing 4 files with 9961AA14xxxxxxxxxxxxxxD…