0

我无法检查我的一些 Java 代码。

我有一个数组:

String[][] myString = new String[3][3];

然后我有一个方法:

public String getString(int x, int y) {

    return myString[x][y];

}

如果我这样做:

String tmp = getString[0][1];
tmp = "Hello";

这会将 myString 的值 0,1 更改为“Hello”还是将 tmp 重新指向读取“Hello”的字符串?

4

5 回答 5

3

不,不会的。

为变量设置新值tmp不会影响您的数组。如果要更改数组的值,则必须这样做

myString[0][1] = "Hello";

或者(更好)使用二传手。

于 2013-06-10T22:59:54.390 回答
2

在 java 中,变量名是对内存中位置的引用。因此:

String tmp = getString(0,1); 
tmp = "Hello";

相当于:

String tmp;//Declares a reference with the name 'tmp'
tmp = getString(0,1); //points 'tmp' to the result from your getter function
tmp = "Hello";//re-points 'tmp' to the string 'Hello'

这不会影响您的原始字符串多维数组myString

请注意,在 Java 中,使用更复杂的概念Lists而不是使用原始数组可能是一个更好的主意。AList<List<String>>将等同于String[][]但具有更多功能和可移植性。

于 2013-06-10T23:00:41.827 回答
1

它将重新指向String阅读“你好”。硬编码字符串的重新分配将分配您刚刚创建的新实例。

于 2013-06-10T23:01:47.947 回答
0

在 Java 以及许多其他流行语言中,“=”符号的左侧是您为其赋值的那个。右侧是分配的值。

VARIABLE = value_to_be_assigned_to_variable
于 2013-06-10T23:50:02.683 回答
0

用它来改变数组的值

myString[0][1] = "Hello";

要更改参考值,请使用此

String tmp = getString[0][1]; //points 'tmp' to a place in your array
tmp = "Hello";//now points 'tmp' to "hello" and this will not effect the array
于 2013-06-10T23:05:44.897 回答