第四章 数组

第四章 数组

1.什么是数组?

数组是一种引用类型,可以用来保存多个相同类型元素的集合

数组的特点:

在Java中,数组是一块连续的内存空间,所以在访问数组元素时可以使用下标访问。数组一旦创建,长度就是固定的,不能改变了。

1.1定义数组

语法:

数据类型[ ] 数组名;//推荐使用这种方式

数据类型 数组名[ ]; //不推荐使用,只是为了兼容C/C++程序员的习惯.

数组定义实际就是一个变量的定义,也需要对数组进行初始化操作。

1.2初始化

数组的初始化通常有两个过程:

1)为数组分配内存,指定数组长度(元素的个数);

JVM根据元素的数据类型和长度决定分配多大的内存

例如:int型数组,要保存5个元素(int占四个字节)–>分配4字节*5=20个字节的内存

2)初始化数组中的每一个元素

数组初始化的三种方式:

1)数组名 = new 数据类型[长度];

​ a)在JVM的堆内存中,开辟出指定长度的连续的一块内存空间

​ b) 为数组中的每一个元素设置成类0的值

​ byte,short,int,long,float,double 直接初始化成0;

​ char 初始化成空字符;

​ boolean初始化成false;

​ 引用类型 初始化成null;(String是引用类型)

实例
在这里插入图片描述

2)数组名 = new 数据类型[ ]{元素1,元素2,元素3,…元素n}

​ a)在JVM的堆内存中,开辟出{ }中元素数量的连续的一块内存空间

​ b) 将{ }中的元素依次放到数组的每一个元素中

3)数组类型 [ ] 数组名={元素1,元素2,元素3,…元素n}

过程与2)一样

1)2)可以在数组定义时使用,也可以在数组定义之后使用

3)只能在 定义数组时使用

具体例子:

在这里插入图片描述

第一行这个可以拆开写,第二行这个不能拆开写,拆开写会报错:

在这里插入图片描述

1.3 引用类型与基本类型处理过程的不同

基本数据类型只涉及到栈:

在这里插入图片描述

引用数据类型不仅涉及到栈,还涉及到堆(new—>跑到堆里面去了,在堆里面开

辟连续的内存空间 )。引用数据类型的变量,栈里面存的是对于元素的起始地址,

堆里面存的才是具体的元素内存(对象)。
在这里插入图片描述

2.数组的操作
2.1 访问数组元素

数组名【下标】

下标:元素在数组中的位置

取值:从0开始~数组的长度-1

(0对应第一个元素,1代表第二个元素…)

如何判断数组的长度:数组名.length 获取数组的长度(数组一旦创建就不能改变数组的大小长度了)

如果下标超出了取值范围,这时会报错:数组下标越界,如图所示:

在这里插入图片描述
在这里插入图片描述

若引用型变量,比如数组中赋值其中某个元素为空,则不能用下标进行访问,否则会出错:

在这里插入图片描述

2.2 数组的遍历

​ 遍历:把集合中的每一个元素依次取出

1)使用循环迭代生成数组的下标,用下标迭代访问
在这里插入图片描述

2)使用增强for循环(也叫foreach)

语法:

for(变量:集合){

循环体

}

运行过程:

a) 从集合中取出一个元素,放在变量中(变量的值就是对应的遍历的元素值,相当于给变量每次赋值。)

b) 如果能取出,进入循环体执行,循环体执行完成后,回到a)

c)如果取不出,结束循环。

在这里插入图片描述

基于遍历可以对数组进行:

1)求和,求平均值

2)求最大最小值

3)查找数组中的元素

代码例子:求最大值:
在这里插入图片描述

代码例子:查找指定元素:

在这里插入图片描述

2.3 二分法查找算法:

在这里插入图片描述
在这里插入图片描述
2.4 排序算法

十大经典排序算法:

1)冒泡排序

2)插入排序

3)选择排序

4)快速排序

前四个要求懂思想,会编码,很重要!!剩下的要知道名字最起码,尽量记住思想

5)堆排序

6)归并排序

7)希尔排序

8)计数排序

9)桶排序

10)基数排序

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.又是新的一天.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值