返回原始数组的数组地址的Java
我有一个关于数组地址的问题。假设我们有一段代码:返回原始数组的数组地址的Java,java,arrays,reference,location,Java,Arrays,Reference,Location,我有一个关于数组地址的问题。假设我们有一段代码: main(){ int[] numbers = {1, 2, 3}; method(numbers); } method(int[] methodNumbers){ methodNumbers= new int[methodNumbers.length]; return methodNumbers; } 这是我想我知道的。如果我错了,请纠正我 所以我知道有主堆栈框架、方法堆栈框架和堆。在我们的main中,存储了i
main(){
int[] numbers = {1, 2, 3};
method(numbers);
}
method(int[] methodNumbers){
methodNumbers= new int[methodNumbers.length];
return methodNumbers;
}
这是我想我知道的。如果我错了,请纠正我
所以我知道有主堆栈框架、方法堆栈框架和堆。在我们的main中,存储了int[]number
。它指向堆中存储索引的地址。我们将int[]numbers
传递到methodNumbers
参数中,因此现在它们指向堆中的相同位置。在我们的方法中,我们为methodNumbers
声明了一个新的int,因此现在int[]methodNumbers
数组指向堆中的一个新位置。但最后我们返回methodNumber
我的问题是,int[]numbersArray
在末尾指向哪里。它是指向同一个位置还是指向与methodNumbers
相同的位置?Java是一种语言,因此您不能更改作为参数传递的变量的值(=reference(!)(如果是数组),但您可以更改它们引用的内容
Java是一种语言,因此您不能更改作为参数传递的变量的值(=引用(!),如果是数组),但您可以更改它们引用的内容
您提供的代码中没有int[]numbersaray与方法调用前指向同一对象。您提供的代码中没有int[]numbersaray与方法调用前指向同一对象。
main(){
int[] numbers = {1, 2, 3};
method(numbers); //returns pointer to new array created in the method; it's unused
//here numbers is unchanged, because changing parameter variables
//in method doesn't change variables outside the method
}
method(int[] methodNumbers){
methodNumbers= new int[methodNumbers.length];
//methodNumbers is a variable local to method,
//you can change it without interfering with other
//variables outside the method; but if you change
//value it referring to (for example via methodNumbers[0] = -1)
//you will change array you created before method
return methodNumbers;
}