思维导图
导学
数组,这样一个概念,我们在之前的编程学习中也已经学习过了。数组是编程语言中最常用的一种数据类型。可以存储多个数据。数组本质上其实是一堆数的集合。
比如,我们想要保存30个类似的数据,如果不用数组的话,那么就需要设置30个变量来保存。而使用数组,我们只需要设置一个变量就可以了。
数组是相同类型的数据按顺序组成的一种引用数据类型
数组的规范
- 存放的数据是相同的数据类型
- 数组的长度在定义时就确定了大小,数组是不可变长度的,或者说叫定长
- 数组中可以存放任意的数据类型(包含基本数据类型、引用数据类型、数组)
- 数组本身是引用数据类型(在栈内存中会存储其在堆内存中的引用地址)
- 数组会在内存中开辟一块连续的内存空间
一维数组
数组的定义
对比之前变量的定义,我们发现,数组与变量的定义不同的地方在于数组的数据类型后面多了一个中括号。
数组的初始化(创建)
在 Java 语言中,**数组必须先被初始化,才能被使用。**所谓的初始化,就是在内存中为数组元素分配空间,并为每个元素赋予初始值。
- 静态初始化:显式的指定每个数组元素的值,由系统来决定数组的大小;
- 动态初始化:只需要指定数组的长度,通过程序动态的给每个元素赋值(即由系统为每个数组元素分配初始值)。
静态初始化
语法:
示例:
该初始化方法,首先定义了数组的内容,同时也根据数组中内容的个数,决定了数组的长度
动态初始化
语法:
示例:
该初始化方法,首先定义了数组的长度,同时根据数据类型的默认值,来暂时确定了数组的内容。
数组在内存中的存储与默认值
比如 int[ ] a = new int[5]。a数组是一个整型数组,所以它会取数组的数据类型的默认值为自己的默认值。在此提前和大家说一下,int类型的默认值为0,所以a数组的默认值全部为0。
同时数组在内存中会开辟一块连续的内存空间。如下图所示:
数组元素的引用
语法:
数组中的索引(下标),通过 arrayName[index] 获取指定位置的数据,index 从 0 开始,最大值为 length-1
我们不但可以通过索引来获取数组中元素的值,同时,我们也可以通过索引来改变数组中对应索引的元素的值。
示例:
数组的长度
语法:
示例:
循环与数组
普通循环
我们可以通过循环来为数组进行赋值和取值
- 通过数组索引方式对数组元素进行赋值时,使用数组**.length**属性作为 for 循环的条件。
- 在对数组元素进行操作时,一般使用 for 循环结构。
示例:
增强型for循环
增强型for循环又叫foreach循环,foreach循环在数组和之后学习的集合中有着重要的作用
示例:
使用 foreach 一般情况下,只用作遍历数据,如果要对数组中元素进行修改,还是需要使用 for 循环带索引的方式进行,因为在上述的代码中,a 只是循环元素的一个副本
冒泡排序
首先我们来看一个问题,如何对一下,a与b的值进行交换
那么,如果我们在数组中存放了一组整数,想要对数组中数据进行由大到小的排序。
比如这样一组数:
思路:
1、首先对数组中相邻的两个数进行比较,把数组元素从头到尾比较一次以后,我们希望能找出最大的那个值,放到数组的末尾。
2、第二次进行比较的时候,找出第二大的值,放到数组的倒数第二位。
3、随后进行第三次直到n次比较完成
代码示例:
二维数组
在之前的课程中,我们也提到数组中可以放置基本数据类型和引用数据类型,尤其是数组中也可以放置数组。
二维数组的声明与创建
语法:
示例:
二维数组的初始化与引用
在学习二维数组的时候,我们需要知道二维数组存放的是什么样的数据;
如图:
想要保存该类数据,就需要使用二维数组了。
所以,我们可以将二维数组看做一个几行几列的表格这样一个形式。
如果我们想要表示上述表格中的数据,就可以采用如下的方式
语法:
示例:
以上使用的属于动态的初始化创建,接下来我们来看看静态的初始化创建。
语法:
示例:
引用: