Arrays 如何通过传递值、引用和值结果参数来查找数组中的最终值?

Arrays 如何通过传递值、引用和值结果参数来查找数组中的最终值?,arrays,parameter-passing,pass-by-reference,pass-by-value,Arrays,Parameter Passing,Pass By Reference,Pass By Value,在课堂上,我们学习传递参数的不同方法。我们关注的是价值、参考和价值结果。我得到了这个代码片段 int[] A = new int[2]; A[0] = 0; A[1] = 2; f(A[0],A[A[0]]); void f(int x, int y){ x = 1; y = 3; } 使用三种参数传递方法,数组A的最终值是什么?有人能解释一下它们是如何得到这些值的吗 更新:我认为,由于[0]=0,因此如果通过值传递,则结果数组将是[0]=0和[1]=2,因为函数不会更改

在课堂上,我们学习传递参数的不同方法。我们关注的是价值、参考和价值结果。我得到了这个代码片段

int[] A = new int[2];
A[0] = 0;
A[1] = 2;
f(A[0],A[A[0]]);

void f(int x, int y){
     x = 1;
     y = 3;
}
使用三种参数传递方法,数组A的最终值是什么?有人能解释一下它们是如何得到这些值的吗


更新:我认为,由于[0]=0,因此如果通过值传递,则结果数组将是[0]=0和[1]=2,因为函数不会更改数组的全局值。另外,我认为传递value-result参数时,它将是[0]=1和[1]=3,但我不确定是否会通过引用传递。

对于基本类型,java将以值的形式传递参数。因此,该值将被复制到函数参数中,并且原始数组不会更改。 所以数组A不会改变

如果将对象作为参数传递,Java将复制指向该对象的指针(对象的地址)。因此,如果编辑对象的任何属性,它将更改原始属性

“通过引用”传递基元值的简单方法是将其封装在对象上。在Java中,数组是一个对象

public static void increment(int[] array, int amount){
   array[0] = array[0] + amount;
}

public static void main(String args[]){
  int[] myInt = { 1 };
  increment (myInt, 5);
  System.out.println ("Array contents : " + myInt[0]); //is going to print 6
}

[0]将是0,[1]将是2,因为您从未更新代码中的数组值。

按值调用: 它将把值复制到函数参数。对值的更改对调用方不可见

参考电话: 它将复制变量的地址。调用方可以看到对引用参数的更改

调用值结果:
这是通过引用调用的特殊情况。变量的内容将被复制到另一个引用。当函数返回此新引用时,将复制回原始引用。调用方可以看到对引用参数的更改。

因此,通过传递值,数组不会更改,但是其他两个呢?Java总是按值传递参数。它总是复制原始值。在Java中不能通过引用传递对象。可以使用对象“模拟”。如果将Java对象传递给方法,Java将复制对象的地址。它将通过值传递对象的地址。这就是为什么如果你改变了对象的属性,你也会改变原始对象。做一些样品。更清楚的是,我实际上刚刚读到这段代码与java无关,所以这是我的错误,因为引用和值结果传递不能在java中完成。我将修改我的标签。