为了账号安全,请及时绑定邮箱和手机立即绑定

重新定义变量后数组的大小是多少?

重新定义变量后数组的大小是多少?

牧羊人nacy 2023-09-27 21:19:27
在 Java 中,我将一个长度为 N 的现有数组分配给一个名为 st 的变量。如果我创建一个大小为 N + k 的相同类型的新数组,称为 newSt。newSt = st 的结果是什么?newSt 是否会包含 st 的内容和空白空间,或者 newSt 是否会将其长度减少到 st 的长度?Object[] st = new Object[20];// st is filledObject[] newSt = new Object[40];newSt = st;
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

在 Java 中,变量名称保留实际数组的引用。因此st=new Object[20],创建一个大小为 20 的数组并将引用分配给st,以及newSt=new Object[40]创建一个大小为 40 的数组并将引用分配给newSt

因此,当我们设置时,我们只是分配 所引用的st=newSt数组的引用。现在我们可以用来访问第二个数组的所有值。stnewStst

它不会对数组进行任何类型的合并、并集或交集。


查看完整回答
反对 回复 2023-09-27
?
www说

TA贡献1775条经验 获得超8个赞

我认为您很困惑,因为您试图将其视为结构分配,但它是一个参考名称。

当您secondArray = firstArray将变量设置secondArray为引用时firstArry,两个具有不同名称的变量引用内存中的同一对象。您之前的初始化secondArray将会丢失。

因此, 的大小newSt和所有对象都与 for 相同,st因为newStisst但具有不同的名称。

您所想的就像是一个使用另一个数组和大小作为参数的构造函数。



查看完整回答
反对 回复 2023-09-27
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

长度将是20...


你也可以自己测试一下:


Object[] st = new Object[20];

System.out.println("st: " + st.length);

Object[] newSt = new Object[40];

newSt = st; // newSt was Object[40], st is Object[20] => newSt is now Object[20].

System.out.println("newSt: " + newSt.length);



查看完整回答
反对 回复 2023-09-27
  • 3 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信