黑马程序员技术交流社区
标题:
关于数组和对象
[打印本页]
作者:
itheima01
时间:
2013-4-14 18:20
标题:
关于数组和对象
老师说,数组只能存放对象的引用,不能直接放对象进去。 Student[] stu={new Student(),new Student()},这不是把对象直接放进去了,为什么老师那么说呢。
作者:
王洪宇
时间:
2013-4-14 18:25
你的写法相当于以下的写法:
Student[] stu = new Student[2];
stu[0] = new Student();
stu[1]= new Student();
stu[0]和stu[1]是Student对象的引用。
作者:
何旭程
时间:
2013-4-14 18:25
Student[] stu={new Student(),new Student()},由于对象是匿名的,的确无法将对象的引用存入数组,但可以将对象的首地址值存入,事实上引用变量里存放的就是对象的首地址值~
作者:
Alan
时间:
2013-4-14 18:33
Student[] stu={new Student(),new Student()},和 Student a = new Student();Student b = new Student(); Student[] stu={a,b}; 是一样的,都是将对象的引用,及在内存中的地址
区别在于前者匿名 后者有名字 就可以用名字再使用此对象。
可以这么理解 b = new Student(); 分等号前与等号后 既然能把“b” 放进去,那么前后相等 “new Student()” 也能放
作者:
沈浩
时间:
2013-4-14 18:44
Student[] stu={new Student(),new Student()}
你new了两个student对象 他会在堆内存开辟两个空间 假如它们在内存中的地址分别为0x0012和0x0013;把这两个对象存到数组中时其实就是存的它们的地址,当有了对象的地址就能找到该对象了
作者:
itheima01
时间:
2013-4-14 18:44
何旭程 发表于 2013-4-14 18:25
Student[] stu={new Student(),new Student()},由于对象是匿名的,的确无法将对象的引用存入数组,但 ...
Student[] stu={new Student(),new Student()},这个是把对象放数组中了不???还是数组中存放的还是地址??
作者:
易杰
时间:
2013-4-14 19:24
数组能存储基本数据,也能存储对象,但数组的长度是固定的。数据存储数据时,只能存储同一类型的数据,所以数组存储对象时,只能存储同一类型的对象。
还有一种能存储对象的容器----集合。集合不能存储基本数据,只能存储对象,但长度不固定。集合存储对象时可以存储不同类型的对象。
作者:
王大斌
时间:
2013-4-14 19:30
首先对对象你就不明确。
创建一个对象 new A();
A a =new A();
其实a是只是地址空间的引用。
对象在堆中创建
而引用在栈中。建议学习数据结构
数组中仅仅是保存了一个栈中的一个指向堆空间的一个对象引用。
作者:
。。。。。。
时间:
2013-4-14 19:51
Student[] stu={new Student(),new Student()},这里面。是存了对象,但是只存对象的地址值,也就是保存在栈中的,指向堆内存的一个引用。地址值存在栈内存里面。而对象存在堆内存里面,其实在平时在在数组里的int等都经过封装后存在堆内存里的。调用数组,就是在调用引用
作者:
黄玉昆
时间:
2013-4-14 22:41
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2