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?