我问一下数组的初始化就是实例化吗?

weikeli19 2016-05-18 12:49:17
我问一下数组的初始化就是实例化吗?
...全文
316 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
比如说别人说“数组”,那么他是指数组引用变量、还是指实际的对象呢?这个需要你来理解,别人不明说。这里就有歧义,然而这个歧义恐怕是永远都会存在的,因为自然语言中通常懒得去抠字眼去区分这个字眼。 而”实例化“这个概念,通常是从引用角度更多一些理解。而“初始化”这个概念,应该是从对象本身的角度更多一些理解。
  • 打赏
  • 举报
回复
sorry,上面写反了: 而”实例化“这个概念,通常是从对象自身的角度更多一些理解。而“初始化”这个概念,应该是从变量赋值的角度更多一些理解。
weikeli19 2016-05-18
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
数组也是一个对象,对象就需要实例化。而初始化,通常是指一个对象实例化时要做的事情。 这二者可以看作不同(对于非程序员而言),但是也可以看作有微妙的不同。关键就看你深入到哪一个层面,以及这个层面对你有什么用处。
你是大师 我看出来了
  • 打赏
  • 举报
回复
“语言的问题”很奇妙!语言中我们经常将对象,跟对象的引用变量,混为一谈。 不要太奇怪!
weikeli19 2016-05-18
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
数组是值类型,不存在实例化问题
            int[] a = { 1, 2, 3, 4 }; //静态分配空间
            int[] b = new int[] { 1, 2, 3, 4 }; //动态分配空间
            int[] c = new int[4]; //动态分配空间
这里的 new 相当于 C 的 alloc 函数,用于动态分配内存
我的天 你这个高手 竟然把数组当作值类型看待 错啦 是引用类型的 不信你上网查查 呵呵你第一次犯低级错误
  • 打赏
  • 举报
回复
一般来说,“初始化”就是指把对象内部的“指向空的”变量指向对象的过程。 例如你写
nt x;
这就算是“没给x初始化”。而如果你写
int x = 1;
那么你就初始化了一个 int 对象。 但是要注意的是,我们往往将变量跟对象混为一谈。例如明明 x 是一个变量,但是我们有时候也简称为“x对象”。于是就会在“初始化”概念上也混用。所以所谓“数组初始化”可能是指对象初始化,也可能是指变量指向一个实际对象。这方面不要太纠结,而要“深入一步”去理解。
  • 打赏
  • 举报
回复
int x;
  • 打赏
  • 举报
回复
另外,语言层面的概念,我们通常把类型给对象混淆起来说。例如我们日常会说“我今天上街买了新鞋”,而不会说“我今天上街买了一只左脚的鞋和一只右脚的鞋”。 因此有时候,你说的所谓“数组”,可能是指你仅仅声明了一个类型为数组类型的变量,而不是值创建了一个对象。要注意这方面的差别。 世事无绝对,理解别人说的名词儿概念也是如此。唯有理解,才是不变的。
xuzuning 2016-05-18
  • 打赏
  • 举报
回复
数组是值类型,不存在实例化问题
            int[] a = { 1, 2, 3, 4 }; //静态分配空间
            int[] b = new int[] { 1, 2, 3, 4 }; //动态分配空间
            int[] c = new int[4]; //动态分配空间
这里的 new 相当于 C 的 alloc 函数,用于动态分配内存
  • 打赏
  • 举报
回复
不过,对于初学者要理解的是,数组是一个独立的对象。数组的实例化,不代表着数组的每一个单元都填了实例化的值。数组的单元可能仍然是 null。
  • 打赏
  • 举报
回复
数组也是一个对象,对象就需要实例化。而初始化,通常是指一个对象实例化时要做的事情。 这二者可以看作不同(对于非程序员而言),但是也可以看作有微妙的不同。关键就看你深入到哪一个层面,以及这个层面对你有什么用处。
wdh123love 2016-05-18
  • 打赏
  • 举报
回复
引用 4 楼 weikeli19 的回复:
[quote=引用 3 楼 wdh123love 的回复:]

A a;//实例化
            a = new A();//初始化
三炮 你瞎歪 我说的是数组[/quote] 一样的哈

int a;//实例化一个整形变量(额,一般叫:声明一个变量)
a=2;//初始化变量a(额,一般叫:给变量a赋值)
int a[];//实例化数组a(额,一般叫:声明一个数组变量)
a=new int [2];//初始化 数组a
a[0]=1;//给数组a的成员赋值(你也可以说是初始化数组a的第一个成员)

wdh123love 2016-05-18
  • 打赏
  • 举报
回复
引用 5 楼 wdh123love 的回复:
[quote=引用 4 楼 weikeli19 的回复:] [quote=引用 3 楼 wdh123love 的回复:]

A a;//实例化
            a = new A();//初始化
三炮 你瞎歪 我说的是数组[/quote] 一样的哈

int a;//实例化一个整形变量(额,一般叫:声明一个变量)
a=2;//初始化变量a(额,一般叫:给变量a赋值)
int a[];//实例化数组a(额,一般叫:声明一个数组变量)
a=new int [2];//初始化 数组a
a[0]=1;//给数组a的成员赋值(你也可以说是初始化数组a的第一个成员)

[/quote] 一般来说,实例化只是声明或者定义一个变量而已,初始化可以近似的理解为赋初值吧
weikeli19 2016-05-18
  • 打赏
  • 举报
回复
引用 3 楼 wdh123love 的回复:

A a;//实例化
            a = new A();//初始化
三炮 你瞎歪 我说的是数组
wdh123love 2016-05-18
  • 打赏
  • 举报
回复

A a;//实例化
            a = new A();//初始化
为轮子而生 2016-05-18
  • 打赏
  • 举报
回复
对于数组本身,new后确实实例化了,它的length等属性也可以使用。但是对于数组成员来说,如果需要实例化,还需要分别new。
  • 打赏
  • 举报
回复
应该是new完并初始值吧

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧