C#:如何在声明类数组时,对每个类进行初始化?

2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
2012年3月 总版技术专家分月排行榜第一
2013年7月 荣获微软MVP称号
2002年10月 VC/MFC大版内专家分月排行榜第一2004年1月 软件工程/管理大版内专家分月排行榜第一2003年1月 软件工程/管理大版内专家分月排行榜第一
2002年10月 VC/MFC大版内专家分月排行榜第一2004年1月 软件工程/管理大版内专家分月排行榜第一2003年1月 软件工程/管理大版内专家分月排行榜第一
2002年10月 VC/MFC大版内专家分月排行榜第一2004年1月 软件工程/管理大版内专家分月排行榜第一2003年1月 软件工程/管理大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。数组的声明
本文所属图书&>&
本书基于Java SE平台,从初学者的角度出发,通过通俗易懂的语言、丰富的实例、细腻的讲解,由浅入深、循序渐进地全面介绍了Java语言的基础知识和常用开发技术。本书讲解时多用类比、对比等写作手法,并配合大量...&&
4.1& 使用一维数组
在程序设计中,使用最多的数组是一维数组,所以在没有特别声明时,本书所说的数组都是一维数组。数组是一组相同类型数据的集合,实际上,一个数组就是一串的变量。
在Java语言中使用数组时,首先要声明和初始化数组,否则就不能使用数组。一般情况下,程序都会访问数组的元素,在遍历数组时还要知道数组的长度,以便可以循环输出。在本节中读者将深入了解一维数组的知识,以便在日后的程序设计中灵活使用数组。
4.1.1& 数组的声明
一维数组可以存储成千上万个元素,与变量相似,使用数组也要遵守&先声明,后使用&的原则。下面是声明数组的格式。
【格式4-1】 声明数组
数据类型& 数组名[]=
数组名 =new 数组类型[数组长度];
数据类型& 数组名[]=new 数组类型[数组长度];
其中,null关键字表示空,即没有指向任何内存空间,数组声明以后在内存中不占用空间,没有地址,其默认值是null。在JDK 1.5后可以把&数据类型& 数组名[]=&写成&数据类型& 数组名[];&,或者将&数据类型& 数组名[]&写成&数据类型[]& 数组名&,读者可以依个人习惯选择。
在声明数组时,必须为数组指定长度。数组长度可以告诉编译器,该数组可以存放多少个元素;使用new关键字命令编译器根据声明数组的长度,在堆内存中开辟相应的内存空间供数组使用。
%注意:数组是引用数据类型,所以数组的元素就存储在堆内存。C#不支持&数据类型& 数组名[]&格式,而支持&数据类型[]& 数组名&格式。
【范例4-1】 声明数组
public class ArrayDemo1 {
&&& public static void main(String[] args) {
&&&&&&& //声明int型数组arrayInt
&&&&&&& int arrayInt[]=
&&&&&&& //为数组arrayInt开辟内存空间,元素为3个
&&&&&&& arrayInt=new int[3];
&&&&&&& //声明char型数组arrayChar并为其分配内存空间,元素个数为4
&&&&&&& char arrayChar[]=new char[4];
&&&&&&& //声明String型数组arrayString并为其分配内存空间,元素个数为5
&&&&&&& String arrayString[]=new String[5];
%提示:为了充分了解数组,下面简单介绍数组在中内存是如何分配的。
Java把内存分为栈内存和堆内存。栈内存保存的只是数组的名称,即使用&数据类型& 数组名[]&就可开辟栈内存,但只开辟栈内存的数组是不能被使用的。因为堆内存是用来存放数组的实体,若想使用数组则需要用new关键字来开辟堆内存,然后把堆内存的控制权交给相应的栈内存,一个堆内存可以被多个栈内存引用。
现在接着对以上的程序进行解释。声明int arrayInt[]=null时,编译器就在栈内存中分配一块内存空间给arrayInt,用来保存指向数组实体的地址空间,如图4-1所示。声明之后,当执行到arrayInt=new int[3]时,这就需要堆内存开辟一个可保存3个int型的内存空间,并将地址返回给arrayInt变量,如图4-2所示。
从图中可以看出,栈内存保存的只是数组变量名称,数组变量所保存的并不是数组的实体,而是数组堆内存的参考地址,数组的实体则保存在堆内存之中。
在我们进一步深入数组之前,先记下数组的以下几个特点:
数组中的每一个元素的数据类型都相同。
&&&&&&&&&&&&&&&&& 图4-1& 声明数组&&& &&&&&&&&&&&&&&&&&&&&&&图4-2& 为数组分配堆内存
数组中的元素长度一旦确定,就不能再改变大小。
数组中的元素可以通过数组下标访问。
数组的元素可以是数组,从而形成二维数组及多维数组。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'C#开发轻松入门
第1章 C#简介
第2章 C#语法基础
第3章 条件结构
第4章 循环结构
第5章 C#中的数组
第6章 编程练习
编程中有这样一种情形:我们需要存储多个同类型数据。比如,保存 1600 个学生的年龄。是否需要声明 1600 个&int&类型的变量?过了一年,学生们长了 1 岁,是否需要给每个变量重新赋值?这件事情,想想就怕怕。好在C#中有一种数组,专门存储一组相同类型的数据。数组的声明和初始化语法如下:
数据类型[ ] 数组名 =&new 数据类型[长度];&
注意:数组名像变量名一样要遵循标识符的命名规则;长度必须是整数
下面我们来比较变量和数组的声明与初始化,右边是在内存中为变量和数组分配空间的示意:
对比变量 x 和数组 y 就会发现,数组 y 中其实包含了 3 个&double&类型的变量,为什么是 3 个?因为初始化数组时在 [ ] 中声明的长度为 3 。既然都在数组 y 中,所以 3 个变量(应该叫数组元素)的名字都叫 y ,为了区分它们,按照顺序给它们加上索引 [0]、[1]、[2] 。请注意:数组的索引从 0 开始递增。那么,数组 y 中 3 个元素的名字就变成了 y[0]、y[1]、y[2] 。最后再注意一点:数组经过初始化以后,数组元素有默认的初始值,&double&类型为 0.0 ,&int&类型为 0 ,&char&类型为 'a' ,&bool&类型为&false&,&string&类型为&null&。
数组元素的赋值与普通变量相同。下面的示例中,我们声明了一个长度为 3 的&string&类型数组,逐个赋值,然后打印:
上例中,需要注意的是元素的索引,数组元素索引从 0 开始递增,所以长度为 3 的数组,其元素索引为 [0]、[1]、[2] 。
如何知道一个数组的长度呢?&数组.Length&属性会返回数组的长度(即数组元素的个数)。请看下面的例子:
代码中的&friends.Length&会返回 friends 数组的长度,请看运行结果:
使用数组,比较容易出错的是数组的长度和元素索引,请在右边代码的第&11&行插入代码,完成数组初始化;在第&13、14、15、16&行填写元素索引完成赋值;在第&18&行填写索引,完成输出。
?不会了怎么办
数组长度为 4 、类型为&int&,所以第&11&行应该为:
int[] age = new int[4];
数组元素索引从 0 开始递增,所以第&13 - 16&行应该为:
age[0] = 18;
age[1] = 20;
age[2] = 23;
age[3] = 17;
第&18&行应该为:age[0],age[1],age[2],age[3]);
using System.Collections.G
using System.T
namespace Test
class Program
static void Main(string[] args)
int[] age =//声明并初始化长度为4的整形数组
//为数组元素赋值
age[ ] = 18;
age[ ] = 20;
age[ ] = 23;
age[ ] = 17;
Console.WriteLine(&四名同学的年龄是:{0}、{1}、{2}、{3}&,
age[ ],age[ ],age[ ],age[ ]);
你发的评论可能会是问题?是否将他发到问答中
Copyright (C)
All Rights Reserved | 京ICP备 号-2
本次提问将花费2个积分
你的积分不足,无法发表
本次提问将花费2个积分
继续发表请点击 "确定"

我要回帖

 

随机推荐