java基础学习4

本文详细介绍了数组的一维和二维概念,涉及动态初始化、数组操作、索引理解、内存示例,包括一维数组的遍历、取最大值、元素打乱,以及二维数组的静态与动态初始化、数据打乱和内存结构。通过实例演示,深入浅出地展示了数组在编程中的应用技巧。
摘要由CSDN通过智能技术生成

数组:(1)一次性声明大量的用于存储数据的变量(2)存储数据通常为同类型数据

一、一维数组

(1)定义:存储多个相同数据类型的存储模型

(2)格式:数据类型 [] 数组名;  或 数据类型 数组名 [];

(3)数组初始化:为数组每一个数据元素分配内存空间并且赋值

1、静态初始化:人决定数组元素初始值,系统决定数组长度(即数组元素个数)

    格式:数据类型 [] 数组名/变量名 ={数据1,数据2,...};

2、动态初始化:人决定数组长度,系统决定数组初始值(整型数组默认初始值是0)

    格式:数据类型 [] 数组名/变量名 =new 数据类型[数组长度];

3、数组索引和数组长度:

(1)索引:数组中数据的编号方式,用于访问数组中的数据

特点:(1)从0开始编号;(2)连续且逐次加一;(3)最大索引=数组长度-1

使用方法:数组名[索引]相当于一个变量,若对它进行赋值运算,则表现为改变数组元素,

(2)数组长度(元素个数):数组名.length

使用方法:数组一旦定义完成,数组名.length 相当于一个已知数,直接使用

4、数组元素访问:

(1)out.println 数组名:输出结果为数组地址名

(2)out.println 数组名[索引]:输出结果为索引对应的数组元素

€1. 一维数组定义、静态初始化、访问数组名、索引、修改数组元素练习如下

e672181287e242f9b5e79ce9f12b795d.png5、练习一维数组常见操作(因为,数组长度是确定的,数组中常见操作是for循环)

€2  数组遍历:将一维数组中的数据元素全部输出:(运用for 循环+索引:数组名[])

4d83ec95f5504930bcda11d302642a6f.png 

44796dcbeb9f48e9bf27a1d253664161.png 

€3 一维数组中取出最大的数据练习如下

分析:一组数据对比取出最大值,可以按照索引顺序,两两比较取最大值再与下一个数据比较取大。运用程序:for循环、三元运算符

24c2185e69654d84b4b902c501e8cc94.png  

 €4  一维数组元素打乱练习如下(数组中的元素位置任意调换,无重复无遗漏)

分析:(1)数据元素由索引一一对应,对索引作交换赋值,实现元素位置交换;(2)要想任意打乱,索引中的编号应是在数组长度范围内随意变换,可以采用随机数生成

31ac7b1e298d436fba617d9479e51ff7.png 

€5  一维数组动态初始化练习

49da1a8c0f1344588e09c5e66512a510.png

6、一维数组内存图

7f1967f839ba4d3d87ecef938d1945e3.png 

(1)索引越界:当索引>=数组长度时,无法输出访问的数据元素

(2)空指针异常:对数组名赋空值时,即arr=null;此时对象不再指向堆内存,如下练习所示

5afb3b72956f463084d6809e8a4d30a2.png 

二、二维数组

1、概念性知识

(1)定义:元素为一维数组的数组(存储多个一维数组的存储模型)

(2)格式:数据类型 [][] 数组名;    或 数据类型 数组名 [][];      或数据类型 [] 数组名 [];
//tip:数组定义格式为 数据类型数组名跟[]或者[][]的全排列的组合

(3)静态初始化格式:数据类型 [][]数组名/变量名 ={{数据1,数据2,...},{数据n,数据n+1}…};
//tip:二维数组是由多个一维数组构成的数组,每个一维数组长度不一定相等但一定是同类型

(4)动态初始化格式:数据类型 [][]数组名/变量名 =new 数据类型 [m][n];
//tip:m是一维数组的个数,n是一维数组的长度

note:二维数组静态初始化可以输入长度不同的一维数组,动态初始化只能输入相同长度的一维数组

(5)数组索引和数组长度:

(1)数组名[i]指的是作为元素的第i-1个一维数组,直接输出获得该一维数组的地址名

(2)数组名[i][j]指的是第i-1个一维数组中第j-1个数据元素

(3)数组名.length表示二维数组的长度

(4)数组名[i].length表示二维数组中第i-1个一维数组的长度

2、二维数组常见操作练习如下(for循环嵌套使用)

€1   静态初始化一个二维数组并且完成数组遍历

dcc9ee76a05a428684650b8a9227ef87.png

feb69d7d494844398cafd98642771e90.png 

€2    二维数组中数据元素打乱 练习(同理于一维数组,此处需要两个随机索引,并且使用循环嵌套)

770ac8aa13ec498b9aeca7e3a19ae02a.png

b4e07725974e447e94978cbdf5cb3c85.png 

3、二维数组内存图

4de5af2fd3b34ef68653bbf75c36dd03.png 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值