总纲】数组通用所有考点(全部数组通用)
1. 数组核心定义
数组是存储相同类型数据、长度固定、内存连续有序的容器,所有数组都继承自 Array 类。
2. 通用铁律(必考)
-
数组一旦创建,长度不可修改
-
下标(索引)从 0 开始
-
合法下标范围:0 ~ 长度-1
-
越界报错原因:下标超过当前维度最大范围
3. 各类数组默认值
-
int、double 数值类型:默认 0
-
bool 类型:默认 false
-
string、object、自定义类 引用类型:默认 null
-
char 类型:默认 \0 空字符
4. for 与 foreach 终极区别
-
for:有下标、可读、可修改数组元素、灵活
-
foreach:简洁快速、无下标、只读、不能修改原数组
5. 通用坑点
直接打印数组变量名,输出的是数组类型名,不会输出元素内容。
第一部分:一维数组(基础必考)
1. 语法格式
数据类型[] 数组名
2. 四种定义方式
-
- 先声明、后开辟空间:int[] arr; arr = new int[5];
-
- 指定长度+初始化元素:int[] arr = new int[3]{1,2,3};
-
- 不指定长度自动推断:int[] arr = new int[]{1,2,3};
-
- 最简字面量:int[] arr = {1,2,3};
3. 遍历规则
for循环条件:i < 数组名.Length
4. Object万能数组
object[] 可以存放任意类型数据,缺点:运算需要强制类型转换。
第二部分:多维数组(二维、三维|规则表格)
1. 维度判定口诀
逗号个数 + 1 = 维度数
-
int[,] → 1个逗号 → 二维数组(行、列)
-
int[,,] → 2个逗号 → 三维数组(块、行、列)
2. 核心特征
多维数组是规则表格结构 ,每一行、每一列长度必须完全一致。
3. 两种定义方式
-
指定维度长度:int[,] arr = new int[2,3];
-
自动推导维度:根据嵌套大括号自动识别行列数
4. 四大核心属性
-
Rank:获取维度数
-
Length:获取总元素个数
-
LongLength:64位总元素数
-
GetLength(n):获取指定维度长度
5. 维度对应规则
-
二维:GetLength(0)=行数,GetLength(1)=列数
-
三维:GetLength(0)=块数,GetLength(1)=行数,GetLength(2)=列数
6. 取值赋值语法
二维:数组[行,列]
三维:数组[块,行,列]
⚠️ 多维数组只能单括号+逗号,不能写 [i][j]
7. 遍历方式
-
嵌套for循环:精准遍历、可改值、可获取下标
-
foreach:平铺遍历所有元素、只读无下标
第三部分:交错数组(锯齿数组|不规则数组)
1. 核心定义
交错数组是数组套数组,外层数组的每一个元素,都是一个独立的一维数组。
2. 最大特征(必考区分)
内层数组长度可以不同,长短参差不齐,属于不规则数组。
3. 语法格式
二维交错:int[][] (双中括号,无逗号)
三维交错:int[][][]
4. 初始化规则
外层数组批量装入多个长度不同的内层一维数组。
5. 取值赋值
取值格式:数组[外层下标][内层下标]
支持定点修改:ints[i][j] = 数值
6. 遍历规则(重点)
-
外层循环:数组名.Length
-
内层循环:数组名[i].Length(必须动态获取,不能写死)
-
支持双层for、双层foreach遍历
第四部分:数组引用类型特性(超级必考)
1. 核心结论
数组属于引用类型 ,赋值操作传递的是内存地址,不是复制数据。
2. 代码原理
int[] arr = new int[] { 1, 2, 3 };
int[] arr2 = arr; // 引用赋值:两个数组指向同一块内存
arr[0] = 999; // 修改原数组
Console.WriteLine(arr2[0]); // 输出999,同步改变
3. 必背规则
-
值类型赋值:拷贝数值,互不影响
-
数组(引用类型)赋值:拷贝地址,两个数组指向同一堆内存
-
修改任意一个数组元素,另一个数组同步变化
第五部分:对象数组(自定义类数组)
1. 概念
存储自定义类对象的数组,数组每一个元素都是一个对象,默认值为 null。
2. 语法公式(必背)
类名[] 数组名 = new 类名[长度];
3. 完整代码案例
// 定义数组:开辟10个People类型空间,默认全部为null
People[] p1s = new People[10];
// 循环批量创建对象、赋值、存入数组
for (int i = 0; i < p1s.Length; i++)
{
People p1 = new People() { Name = "学生" + i };
p1s[i] = p1; // 将对象存入数组对应下标
}
// 遍历对象数组
foreach (People p in p1s)
{
Console.WriteLine(p.Name + "+++");
}
4. 易错点
-
只 new 数组,不会自动 new 对象,元素默认是 null
-
必须手动循环 new 对象并赋值给数组下标,否则访问属性报错(空引用异常)
第六部分:string.Join() 数组快速拼接方法
1. 作用
将数组所有元素,按照指定分隔符拼接成一个完整字符串。
2. 语法
string.Join("分隔符", 数组名);
3. 案例
int[] arr = new int[] { 999, 2, 3 };
string res = string.Join("-", arr);
Console.WriteLine(res); // 输出:999-2-3
4. 优势
无需循环遍历,一键输出数组所有元素,考试高频输出写法。
第七部分:三大数组终极对比(考试简答题满分)
1. 语法区别
-
一维数组:[]
-
多维数组:[,] 逗号分隔、规则表格
-
交错数组:[][] 多括号嵌套、不规则锯齿
2. 结构区别
-
多维数组:所有行列长度统一,整体表格
-
交错数组:每行长度可以不一样,数组嵌套数组
3. 取值区别
-
多维:[行,列]
-
交错:[外层][内层]
4. 长度获取区别
-
多维数组:GetLength(维度)
-
交错数组:外层.Length / 内层[i].Length
第八部分:数组全套易错点汇总(满分避坑)
-
- 数组长度固定,不支持扩容
-
- 所有下标遵循:最大下标 = 长度 - 1,禁止越界
-
- 一维遍历用 Length,多维遍历必须用 GetLength()
-
- 多维逗号[,]、交错双括号[][],语法绝对不能混用
-
- 交错数组内层长度不统一,遍历必须动态获取长度
-
- foreach 遍历所有数组都是只读,不能修改原数据
-
- 直接打印数组名输出类型,不输出元素
-
- 数组是引用类型,赋值共享内存,一改全改
-
- 对象数组只new数组不new对象,会出现null空引用报错
第九部分:终极默写短句(考前必背完整版)
-
数组固定长度存同类,下标从零起,最大长度减一
-
数值默认0,布尔false,字符串对象null,字符空
-
for带下标可改值,foreach简洁只读无下标
-
多维逗号规则表,行列长度都统一
-
交错括号数组套,内层长度不统一
-
多维取值逗号隔,交错取值双层括
-
数组属于引用类型,赋值传地址,一改全同步
-
对象数组先开空间,循环new对象赋值防空指针
-
string.Join快速拼接,一键输出数组所有元素