部分内容由千峰教育(莫新宇)听课笔记总结p38
数组用来将相同数据类型存储在单元里组成的构造类型
数组的每个成员称为一个数组元素
一维数组定义
数据类型[ ] 数组名;
//一组年龄
int[] ages;
//一组分数
float[] scores;
//一组名字
string[] names;
using System;
namespace dArray
{
class Program
{
static void Main(string[] args)
{
#region 数组的定义
//定义一个整型
int number=5;
//定义一个整型数组
int[] numbers;#endregion
}
}
}
一维数组初始化
在定义数组后,必须对齐进行初始化才能够使用
动态初始化
数据类型[] 数据名=new 数据类型[数组长度]
例:int[] intArray=new int[6];[数组元素为默认值]
int默认值0
float默认值0
bool默认值false
char默认值'\0',表示空字符
string默认值null
数据类型[] 数组名=new 数据类型[数组长度]{元素1,元素2};
例:int[] intArray=new int[3]{1,2,3};
注意:在这种情况下,不能将数组定义和静态初始化分开
或例:int[] intArray=new int[]{1,2,3};
静态初始化
数据类型[] 数组名={元素1,元素2,...,元素n}
例:int[] myArr={1,2,3,4,5};
注意:在这种情况下,不能将数组定义和静态初始化分开
数组元素
数组元素的访问
元素访问:数组名+下标
数组下标
数组下标:数组元素在数组中的序号
数组下标从0开始计数
数组下标可以是常量也可以是变量
数组长度:arr.Length表示数组的长度
数组访问从0开始
arr.Length是只读的
访问数组时,切记下标所对应的数组元素时存在的
如果不存在,就会引发数组越界异常
数组赋值
数组属于一种引用类型,因此如果将数组名b赋给数组a,那么数组b在操作数组元素时,实质上操作的还是数组a
引用类型
数据类型
值类型(储存在栈内存)
栈内存里存的是具体的值
前面学习过的值类型
int、float、bool、char
引用类型(存储在堆内存)
栈内存里存的是地址(堆内存的地址)、string(特例)
数组是一个整体,不能直接参加运算,只能对单个元素进行处理,通常用到数组的地方都会用到循环。
遍历数组
遍历数组:访问数组中的每一个元素
using System;
namespace dArray
{
class Program
{
static void Main(string[] args)
{
//#region 数组的定义
定义一个整型
//int number=5;
定义一个整型数组
//int[] numbers=new int[5];
//float[] scores = new float[3] { 90, 80, 70 };
//string[] names = new string[] {"xiaoming","xiaohong"};
//float[] attacks = { 78.5f, 100f };
静态初始化
//float[] magic;
//magic = new float[] { 78.5f, 100f };
//#endregion
//#region 元素访问
//int[] numbers = { 3, 5, 8, 10, 2 };
//Console.WriteLine("0号元素:"+numbers[0]);
更改2号元素的值
//numbers[2] = 666;
//#endregion
获取数组的长度
//Console.WriteLine(numbers.Length);
#region
//定义[在栈里开辟内存]
int[] scores;
//初始化数组[new关键词一般在堆里]
scores = new int[] {90,80,70};
int[] newScores;
//用新的数组存储成绩
newScores = scores;//scores把地址传给了newScores
//修改第0号元素的值
newScores[0] = 85;
Console.WriteLine(scores[0]);
#endregion
#region 测试string是值类型还是引用类型
string firstName = "xiaoming";
string newName = firstName;
newName = "xiaohong";
Console.WriteLine(firstName);
#endregion
#region 遍历数组
int[] ads = new int[] { 80, 100, 12, 38, 24 };
for (int i=0;i<ads.Length;i++) { Console.WriteLine(i+":"+ads[i]); }
#endregion}
}
}