Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重新定义变量后数组的大小是多少?_Java_Arrays_Variables - Fatal编程技术网

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

Java 重新定义变量后数组的大小是多少?,java,arrays,variables,Java,Arrays,Variables,在Java中,我将一个长度为N的现有数组分配给一个名为st的变量。如果我创建一个大小为N+k的相同类型的新数组,则称为newSt。newSt=st的结果是什么? newSt将包含st和空格的内容,还是将其长度减少到st的长度 Object[] st = new Object[20]; // st is filled Object[] newSt = new Object[40]; newSt = st; 长度将是20 您也可以自己测试它: Object[] st = new Object

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

Object[] st = new Object[20];

// st is filled

Object[] newSt = new Object[40];

newSt = st;

长度将是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);

我认为你很困惑,因为你试图把这看作是一个结构性的分配,但它是一个参考名称

secondArray=firstArray
使变量
secondArray
引用
firstArry
时,两个名称不同的变量引用内存中的同一对象。先前对
secondArray
的初始化丢失

因此
newSt
和所有对象的大小与
st
的大小相同,因为
newSt
st
,但有另一个名称


您的想法类似于一个构造函数,它使用另一个数组和大小作为参数。

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

因此,当我们设置
st=newSt
时,我们只是将数组的引用赋值给
st
,它正被
newSt
引用。现在我们可以使用
st
访问第二个数组的所有值


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

您自己是否尝试过检查?