本节内容
一、数组的由来
二、数组是什么
三、相关术语
四、数组的特点
五、声明数组的语法(一维数组)
六、初始化数组的语法(一维数组)
七、数组的默认值
八、访问数组元素的语法(一维数组)
九、遍历数组的方法(一维数组)
十、获取数组长度
十一、修改数组元素的语法
一、数组的由来
在实际编程中,经常需要处理大量相同类型的数据。例如:存储100个学生的成绩。如果为每个数据都单独声明一个变量,代码会变得冗长且难以维护。无法进行循环处理。
int score1 = 90;
int score2 = 85;
int score3 = 78;
// ... 需要声明100个变量
为了解决上述问题,数组应运而生。数组允许我们用单个变量名存储多个相同类型的值。
二、数组是什么
数组的样子:
{1,2,3,4,5}
{80.5F,79.5F,65.5F,80.5F}
{100,200,300,400,500}
{'A','B','C',"D",'E'}
{true,false,false,true,true}
数组是一种数据结构。
数组是用花括号包裹的一组同类型的值。
数组是一组同类型数据的有序集合。
三、相关术语
{'A','B','C',"D",'E'}
索引: 0 1 2 3 4数组中的每一个值,
数组元素:数组中存储的每一个值。
索引:也叫“下标”,用于访问数组元素的整数值。
数组长度:数组中包含的元素个数。
声明数组:指定数组变量名称和类型的过程。
数组初始化:为数组分配内存并首次赋值的过程。
数组实例化:使用new关键字创建数组对象的过程。
元素访问:通过索引获取数组元素值的操作。
元素赋值:通过索引修改数组元素值的操作。
遍历数组:按顺序访问数组中每个元素的过程。
索引越界:使用不在有效范围内的索引访问数组。
一维数组:只有一个维度的简单数组。
多为数组:具有多个维度的数组。
四、数组的特点
类型统一:所有元素必须是相同的数据类型
长度固定:一旦创建,大小不能改变
索引访问:可以通过索引直接访问任意元素
五、声明数组的语法(一维数组)
基本语法
数据类型[] 数组名;
具体语法:
int[] 数组名; // 声明整型数组
string[] 数组名; // 声明字符串数组
double[] 数组名; // 声明双精度浮点数数组
bool[] 数组名; // 声明布尔值数组
声明时的注意事项
声明数组时只是定义了引用变量,并没有实际创建数组实体对象
数组变量默认值为
null
,需要初始化后才能使用
int[] array1;
六、初始化数组的语法(一维数组)
语法1:默认值法(先声明后初始化)
数据类型[] 数组名;
数组名 = new 数据类型[数组长度];
示例
int[] numbers;
numbers = new int[5]; // 创建包含5个整数的数组,默认值都是0
// 先声明大小,后赋值
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
语法2:自定义值法(声明同时初始化)
数据类型[] 数组名= new 数据类型[数组长度]{值1,值2,...值N};
示例
// 方法2:直接初始化元素值
int[] numbers = new int[] {1, 2, 3, 4, 5};
语法3:直接量法(声明同时初始化)
数据类型[] 数组名= {值1,值2,...值N};
示例(最常用)
int[] numbers = {1, 2, 3, 4, 5};
// 字符串数组
string[] fruits = {"苹果", "香蕉", "橙子"};
// 双精度数组
double[] temperatures = {25.5, 26.0, 24.8};
// 布尔数组
bool[] results = {true, false, true};
// 字符数组
char[] letters = {'A', 'B', 'C'};
七、数组的默认值
当创建数组但不显式赋值时,元素会被设置为默认值:
数值类型:0
bool类型:false
引用类型:null
char类型:'\0'(空字符)
八、访问数组元素的语法(一维数组)
语法:通过索引访问元素
数组名[索引];
示例
int[] scores = {90, 85, 78, 92, 88};
// 访问单个元素
int firstScore = scores[0]; // 90
int thirdScore = scores[2]; // 78
// 在表达式中使用
int total = scores[0] + scores[1] + scores[2];
Console.WriteLine("第一个分数: " + scores[0]);
九、遍历数组的方法(一维数组)
方法1:for循环
//示例数组
int[] numbers = {10, 20, 30, 40, 50};
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine($"索引 {i} 的值: {numbers[i]}");
}
方法2:foreach循环(只读访问)
foreach (int number in numbers)
{
Console.WriteLine($"值: {number}");
}
方法3:while循环
int index = 0;
while (index < numbers.Length)
{
Console.WriteLine(numbers[index]);
index++;
}
十、获取数组长度
语法
数组名.Length;
示例
int[] numbers = {1, 2, 3, 4, 5};
int length = numbers.Length; // 获取数组长度:5
// Length属性的应用
for (int i = 0; i < numbers.Length; i++)
{
// 安全访问,避免越界
}
十一、修改数组元素的语法
场景1:直接赋值修改
int[] scores = {90, 85, 78, 92, 88};
// 修改单个元素
scores[0] = 95; // 将第一个元素改为95
scores[2] = 80; // 将第三个元素改为80
// 修改后数组变为:{95, 85, 80, 92, 88}
场景2: 批量修改元素
int[] numbers = new int[5];
// 通过循环批量赋值
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = (i + 1) * 10; // 10, 20, 30, 40, 50
}
// 基于条件修改
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] > 30)
{
numbers[i] = 0; // 大于30的元素都设为0
}
}
场景3: 用户输入修改数组
int[] numbers = new int[3];
// 从用户输入获取值
for (int i = 0; i < numbers.Length; i++)
{
Console.Write($"请输入第 {i + 1} 个数字: ");
numbers[i] = int.Parse(Console.ReadLine());
}
// 显示修改后的结果
Console.WriteLine("修改后的数组:");
foreach (int num in numbers)
{
Console.WriteLine(num);
}