Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/144.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 - Fatal编程技术网

Java 一次性更换整个阵列。

Java 一次性更换整个阵列。,java,arrays,Java,Arrays,我有一个大小为10的数组A和另一个大小为5的数组B 两者都有相同的元素,除了数组A还有5个空元素。我们是否可以将指针A的值替换为指针B,如下所示: arrayA = arrayB; 将arrayA作为arrayB的参考。Java中没有指针。不,这只会使变量arrayA引用arrayB(并失去对它所持有的任何数组的原始引用,数据丢失)。您需要像这样复制它: String[] a = .... String[] b = new String[a.length]; System.arraycopy(

我有一个大小为10的数组A和另一个大小为5的数组B

两者都有相同的元素,除了数组A还有5个空元素。我们是否可以将指针A的值替换为指针B,如下所示:

arrayA = arrayB;

将arrayA作为arrayB的参考。Java中没有指针。

不,这只会使变量arrayA引用arrayB(并失去对它所持有的任何数组的原始引用,数据丢失)。您需要像这样复制它:

String[] a = ....
String[] b = new String[a.length];
System.arraycopy(a,0,b,0, a.length);

注意,这将从索引0复制a.length元素,即整个数组。

您可以更改该数组的引用

这个片段是

import java.util.*;
import java.lang.*;

class Main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // array1 having three null elements
        String[] array1 = new String[]{ "hello", "world", "from", "array1", null, null, null };
        // array2 having no null elements
        String[] array2 = new String[]{ "hi", "this", "is", "array2" };

        // print array1
        for (String value : array1)
        {
            System.out.println(value);
        }

        // swap values
        array1 = array2;

        // print array1 again
        for (String value : array1)
        {
            System.out.println(value);
        }
    }
}
输出是

// before changing
hello
world
from
array1
null
null
null
// after changing reference
hi
this
is
array2
你应该使用

然后您将得到一个结果:

6
7
8
9
10 

最接近于俯冲的是这一行:

System.arrayCopy(arrayA, 0, arrayB, 0, arrayB.length);

如果您想合并数组,则不需要。代码段将简单地使arrayA和arrayB引用同一个对象。不确定您想要什么,但听起来您可能需要System.arraycopy-现在arrayA变量(堆栈)正在引用arrayB对象(堆),如果arrayA对象(堆)不再被引用,gc将删除arrayA对象(堆),这么做你失去了对arrayA对象的引用你是说arrayA会引用arrayB对吗?把我的nick@nachokk放进去,因为我没有通知你。是的,这是arrayA将引用arrayB,而你将失去对arrayA objectok的引用谢谢,我不确定,奇怪的是,我在谷歌上找不到任何东西。
6
7
8
9
10 
System.arrayCopy(arrayA, 0, arrayB, 0, arrayB.length);