第六章:数组

一、理解

1. 数组:

一次性定义多个相同类型的变量,可以存储多个数据,并且可以对多个变量进行统一

2. 数组的重要因素:

数据类型、数组的长度

3. 数组的使用:

(1) 声明数组:确定数据类型
数据类型 [] 数组名 ; // 建议
数据类型 数组名 [];
数据类型 [] 数组名 ;
int[] a;
(2) 分配空间:确定数组的长度
数组名 = new 数据类型 [ 长度 ];
a = new int[5];

4. 数组细节:

(1) 数组的下标:从 0 开始,依次为 0 1 2... 数组的长度-1
(2) 数组的访问:数组名 + 下标,数组名 [ 下标 ]
(3) 当访问数组时,给定的下标不合理,编译通过,运行报错,错误信息为:
java.lang.ArrayIndexOutOfBoundsExcepton(数组的下标越界 )
(4) 数组中元素进行一一访问,数组的遍历
for(int i=0;i< 数组的长度 ;i++){
// 通过 数组名 [i] 访问数组元素
}
(5) 获取数组的长度:数组名 .length

5. 数组的默认值:

整数类型: 0
小数类型: 0.0
布尔类型: false
字符类型:空字符
引用类型: null

6. 数组定义:

(1) 先声明,再分配 空间
数据类型 [] 数组名 ;
数组名 = new 数据类型 [ 长度 ];
(2) 声明的同时分配空间:
数据类型 [] 数组名 = new 数据类型 [ 长度];
(3) 显示初始化:
数据类型 [] 数组名 = new 数据类型 []{ 数据1, 数据 2};
注意:数组的长度由 {} 中数据的个数决定 (4) 显示初始化:
数据类型 [] 数组名 = { 数据 1 ,数据 2, 数据3};
注意:数组的声明和初始化一起完成

二、数组的内存

1. 数组在内存的空间连续的
2. 数组类型的变量粗出的是数组在内存空间的首地址
3. 寻址方式:首地址 + 下标 * 数据类型的字节数

三、数组的扩容

1. 思想:

(1) 创建一个长度更大的新数组,通常为原数组的两倍
(2) 将原数组中内容一一赋值到新的数组中
(3) 新地址覆盖旧地址

2. 数组扩容的实现:

(1) 第一种方式:
int[] a = new int[]{1,8,4}; // 长度为 3
for(int
i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println();
// 存储 一个新的数据 5
// 数组长度不够用,需要扩
// 1. 定义一个更大长度的
数组
int[] b = new int[a.length*2];
// 2. 将旧数组中内容,赋
值到新数组中
for(int
i=0;i<a.length;i++){
// =
b[i] = a[i];
}
//

3. 新地址覆盖旧地址

a = b;
System.out.println("
容之后的结果: ");
for(int
i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println();
(2) 第二种方式:借助工具类实现扩容
a=java.util.Arrays.copyOf( 原数组名 , 新数组的长度);

四、二维数组 【开发不常用+算法应用-比赛重点+考试-不设为重点】

1. 理解:
一维数组的一维数组,有行和列
2. 访问二维数组,通过行标和列标进行访问:数组名[ 行标 ][ 列标 ] (行标也称为高维,列标也 成:低维)
3. 二维数组的遍历: // 通过外层循环控制行
for(int i=0;i< 数组名 .length;i++){
// 通过内层循环控制列
for(int j=0;j< 数组名 [i].length;j++)
{
// 通过 a[i][j] 访问对应的数据
}
}

五、数组的排序

1. 排序:将数组中元素按照一定的顺序进行存储
2. 排序的方式:从小到大
(1) 冒泡排序:每次将相邻的两个元素进行比较,
将较大的元素逐步往后放
// 外层循环:控制比较的轮数
for(int i=1;i<a.length;i++){
// 内层循环控制每轮具体比较的内容
for(int j=0;j<a.length-i;j++){ // 使用 a[j] a[j+1] 进行比较
- 》相邻
if(a[j]>a[j+1]){
// 交换
int temp =
a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
(2) 第二种方式:借助工具类
java.util.Arrays.sort( 数组名 );
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值