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

在 Java 中,我将一个长度为 N 的现有数组分配给一个名为 st 的变量。如果我创建一个大小为 N + k 的相同类型的新数组,称为 newSt。newSt = st 的结果是什么?newSt 是否会包含 st 的内容和空白空间,或者 newSt 是否会将其长度减少到 st 的长度?


Object[] st = new Object[20];


// st is filled


Object[] newSt = new Object[40];


newSt = st;


牧羊人nacy
浏览 77回答 3
3回答

烙印99

在 Java 中,变量名称保留实际数组的引用。因此st=new Object[20],创建一个大小为 20 的数组并将引用分配给st,以及newSt=new Object[40]创建一个大小为 40 的数组并将引用分配给newSt。因此,当我们设置时,我们只是分配 所引用的st=newSt数组的引用。现在我们可以用来访问第二个数组的所有值。stnewStst它不会对数组进行任何类型的合并、并集或交集。

www说

我认为您很困惑,因为您试图将其视为结构分配,但它是一个参考名称。当您secondArray = firstArray将变量设置secondArray为引用时firstArry,两个具有不同名称的变量引用内存中的同一对象。您之前的初始化secondArray将会丢失。因此, 的大小newSt和所有对象都与 for 相同,st因为newStisst但具有不同的名称。您所想的就像是一个使用另一个数组和大小作为参数的构造函数。

慕侠2389804

长度将是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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java