java对象数组的动态初始化问题

在对象数组的动态初始化方法时先开辟了空间即例如:Personper[]=newPerson[3];而在对单个对象进行赋值时再次用到关键字new即如:per[0]=newP... 在对象数组的动态初始化方法时先开辟了空间
即例如:Person per[ ] = new Person[ 3 ];
而在对单个对象进行赋值时再次用到关键字new
即如: per[ 0 ] = new Person("张三");
// Person("张三") 为已构造好的构造函数,这里不考虑任何语法问题; 此句为per[ 0 ]的某个属性进行赋值为“张三”的操作

那么我想问的是:根据我的理解,Person类里对象per[0]中的name属性为String是不可改变其内容的;在第一次new执行申请出一个per[0]的空间时,其name值为null, 在第二次new执行对name内容的赋值是否将per[0].name的内存指向改变? 即"null"和“张三” 并非同一块空间,也就是说per[0].name的参数修改涉及到了两块String内存空间?
展开
 我来答
百度网友5973b4c
2015-02-13 · 超过20用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:39.5万
展开全部
我的理解时这样的:
当Person per[] = new Person[3];这句代码执行时,系统会申明一个数组变量,并指向三个地址,但是地址中是没有值的。
per[0] = new Person("张三");当执行到这句代码时,系统会将其中数组地址中索引为0的地址赋值,值为对象(Person('张三')),而并不是String内存空间。
并且你贴出来的这两句代码中只会执行一次new操作
也就是只会为其中一个对象的name赋值字符串“张三”
我觉得不会涉及到两块String内存空间
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式