- 数组就是一个容器,用来存一批同种类型的数据
- 在日常编写程序时,遇到批量数据的存储和操作时,数组比变量更合适
- 定义数组的时候直接给数组赋值
静态初始化数组的格式:
- 注意:数据类型 [] 数组名也可以写成数据类型 数组名[];各类型的数组只能存放相应类型的数据。
数组在计算机中的基本原理:
- 数组变量名中存储的是数组在内存中的地址,数组是一种引用数据类型
- 定义如下数组,然后内存中会有这样的运行逻辑
数组的访问:
- 数组访问格式:
- 数组的长度属性:length
- 表示数组的最大索引:
- 注意:如果访问数组时,使用的索引超过了数组最大索引时,执行程序会出现bug,出现一个索引越界的异常提示
数组的遍历:
- 遍历:就是一个一个数据的访问
- 遍历数组的应用:求和、元素搜索、找最大值、最小值等,例如:
案例:数组遍历 - 求和
- 需求:某部门 5 名员工的销售额分别是:16、26、36、6、100,请计算出他们部门的总销售额
- 分析:
① 把这5个数据拿到程序中去 —> 使用数组
② 遍历数组中的每个数据,然后在外面定义求和变量把他们累加起来。
- 解决:
- 代码:
- 数组的动态初始化:定义数组时先不存入具体的元素值,只确定数组存储的数据类型和数组的长度
动态初始化数组的格式:
- 注意:静态初始化和动态初始化数组的写法是独立的,不可以混用
动态初始化数组元素默认值规则:
两种数组定义的方法各自适合的业务场景:
- 动态初始化:适合开始不确定具体元素值,只知道元素个数的业务场景。
- 静态初始化:适合一开始就知道要存入哪些元素值的业务场景。
案例:评委打分
- 需求:某歌唱比赛,需要开发一个系统:可以录入 6 名评委的打分,录入完毕后立即输入平均分做为选手得分。
- 分析:
①6 名评委的打分是后期录入的,一开始不知道具体的分数,因此定义一个动态初始化的数组存分数。
②遍历数组中的每个位置,每次提示用户录入一个评委的分数,并存入到数组对应的位置
③遍历数组中的每个元素进行求和,最终算出平均分打印出来即可
- 解决:
- 代码:
案例:成绩数据分析
- 需求:某班级学生 Java 考试成绩是:99,100,62,15,48,65,98,99,5,59.5,75;请统计及格学生总人数
- 分析:
①把这一批成绩数据放到程序中去 —> 使用静态初始化的数组组装起来
②使用 for 循环遍历数组中的每个成绩,并在循环外定义一个计数变量 count
③每遍历一个数据,判断该数据是否大于等于 60 分,满足条件则让 count 加 - 解决:
- 代码:
Java 内存分配介绍:
- 运行一个 Java 程序,主要看 JVM 中包含的方法区、栈内存、堆内存
数组在计算机中的执行原理:
- 首先我们拿一段程序举例:
- 输出结果如下:
10
[I@119d7047]
22
44
55
66
- 运行逻辑:
- int a = 20; int[] arr = new int[3] 这两行代码的执行原理:
- a 是变量,直接放在栈中,a 变量中的存储的数据就是 20 这个值。
- new int [3] 是创建一个数组对象,会在堆内存中开辟区域存储3个整数
- arr 是变量,在栈中,arr 中存储的是数组对象在堆内存中的地址值。
- 同样,我们也拿一段程序举例:
- 输出结果如下:
[I@4c
[I@4c
99
- 运行逻辑:
- 如果某个数组变量存储的地址是null,那么该变量将不再指向任何数组对象,例如:
- 如果某个数组变量中存储的 null,代表这个数组变量没有指向数组对象,可以输出这个变量,但是不能用这个数组变量去访问数据或者访问数组长度,会报空指针异常:NullPointerException
- 需求:求5名同学成绩中的最大值并输出
- 分析:
①把 5 名同学的成绩拿到程序中去,用数组装起来
②定义一个变量用于记录最终的最大值
③从第二个位置开始:遍历数组的数据,如果遍历的当前数据大于 max 变量的存储的数据,则替换变量存储的数据为当前数据
④循环结束后输出 max 变量即可
- 解决:
- 代码:
- 需求:某个数组有五个数据:1,2,3,4,5,请将这个数组中的数据进行反转
- 分析:
①使用循环,控制让数组的前后位置的元素依次交换;
②定义一个临时变量记住 arr[i] 位置处的元素;
③再把 arr[j] 的元素赋值给 arr[i]
④最后把临时变量记住的 arr[i] 的元素赋值给 arr[j]。
- 解决:
- 代码:
- 需求:某公司开发部 5 名开发人员,要进行项目汇报演讲,现在采取随机排名后进行汇报,请先依次录入 5 名员工的工号,然后展示出一组随机的排名顺序。
- 分析:
在程序中录入 5 名员工的工号存储起来 --> 使用动态初始化数组的方式
依次遍历数组中的每个数据
每遍历到一个数据,都随机一个索引值出来,让当前数据与该索引位置处的数据进行交换。
- 解决:
到此这篇改变数组中元素的值(数组元素可以改变的数组称为)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/17223.html