Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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,那么,是否可以从不同的数组中引用另一个数组元素 像这样 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 这可能吗?如

那么,是否可以从不同的数组中引用另一个数组元素

像这样

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


这可能吗?如果不是,这是否可能使用变量?

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

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

编辑

从您的问题后面来,您所寻找的是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

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

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

编辑

从您的问题后面来,您所寻找的是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
在上面的代码中,您正在创建一个名为array2的数组,其第0个索引包含字符串LiteralHello的引用,第1个索引包含StringPool中存在的字符串literalWorld的引用,array1[0]也在引用该数组。根据array2,编译器对[1]进行如下更改:

String[] array2 = new String[] {"Hello", "World"};
现在排队:

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

在上面的代码中,您正在创建一个名为array2的数组,其第0个索引包含字符串LiteralHello的引用,第1个索引包含StringPool中存在的字符串literalWorld的引用,array1[0]也在引用该数组。根据array2,编译器对[1]进行如下更改:

String[] array2 = new String[] {"Hello", "World"};
现在排队:

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


听起来好像你想要C++之类的东西…这给你一个提示:String [] Aray1=新String []{Word };String[]array2=新字符串[]{Hello,array1[0]};阵列1[0]=大卫;阵列2[1]=阵列1[0];forString元素:array2 System.out.printelement;}@happybuddha是的,谢谢你,伙计!听起来好像你想要C++之类的东西…这给你一个提示:String [] Aray1=新String []{Word };String[]array2=新字符串[]{Hello,array1[0]};阵列1[0]=大卫;阵列2[1]=阵列1[0];forString元素:array2 System.out.printelement;}@happybuddha是的,谢谢你,伙计!那么,有没有办法编辑array1[0]并使用更新的array1[0]打印array2?有没有办法编辑array1[0]并使用更新的array1[0]打印array2?