Java数组引用另一个数组

时间:2013-03-26 16:55:19

标签: java arrays

那么可以从不同的数组中引用另一个数组元素吗?

喜欢这个

String[] array1 = new String[] {"World"};
String[] array2 = new String[] {"Hello", array1[0]};

array1[0] = "David";

for(String element : array2)
   System.out.print(element);

当我尝试打印数组时,它只打印HelloWorld而不是HelloDavid

这可能吗?如果没有,这是否可以使用变量?

2 个答案:

答案 0 :(得分:7)

你拥有的是有效的,但输出将是HelloWorld,而不是HelloDavid

虽然array1[0]将有一个新值,但array1将不受影响,因为它存储String值引用,而不是数组引用,因此当数组引用更新时,数组中引用的字符串是没有改变

修改

从您的问题开始,您正在寻找的是指针功能(由C ++提供)。以下多维解决方案并不完全相同且非常笨重,但它会做你想要的:

    String[] array1 = new String[]{"World"};
    String[][] array2 = new String[][]{new String[] {"Hello" }, array1};

    array1[0] = "David";

    for (String[] element : array2)
        System.out.print(element[0]);

    ==> output: HelloDavid

答案 1 :(得分:0)

String[] array2 = new String[] {"Hello", array1[0]};

在上面的代码中,您创建了一个名为array2的数组,其0th索引包含String literal“Hello”的引用,1st索引包含String的引用{1}}中出现的{1}}文字(“世界”),其中array1 [0]也引用了它。根据{{​​3}} StringPool编译器更改如下:

array2[1]

现在排队:

String[] array2 = new String[] {"Hello", "World"};

您使array1[0] = "David"; 包含array[0]中新创建的字符串“David”的引用。但它不会改变StringPool的索引1处的元素。由于array2已经指代array2[1]中出现的字符串文字“世界” 如果您在代码中进行以下更改,您将获得“HelloDavid”输出:

StringPool