2

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

两者都有相同的元素,除了数组 A 有 5 个空元素。我们可以像这样将指针 A 的值替换为指针 B:

arrayA = arrayB;
4

5 回答 5

3
arrayA = arrayB;

将使arrayA 成为对arrayB 的引用。Java中没有指针。

于 2013-06-07T01:57:42.307 回答
2

最接近一举一动的是这个单线:

System.arrayCopy(arrayA, 0, arrayB, 0, arrayB.length);
于 2013-06-07T03:33:03.903 回答
1

You should use System.arraycopy.

public class SystemDemo {

   public static void main(String[] args) {

      int arr1[] = { 1, 2, 3, 4, 5 };
      int arr2[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
      System.arraycopy(arr2, 5, arr1, 0, 5);

      for (int i : arr1) {
          System.out.println(i);
      }
   }
}

Then you will get a result:

6
7
8
9
10 
于 2013-06-07T02:10:26.280 回答
1

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

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

请注意,这会从索引 0(整个数组)复制 a.length 元素。

于 2013-06-07T01:59:19.990 回答
1

您可以为此更改参考。http://ideone.com/Rl3u4k

片段是

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
于 2013-06-07T02:03:47.077 回答