我正在对局部变量进行更改并返回它。我认为它应该在第 9 行打印 12。
public class HackerEarth {
int a[]= {3,4,5};
int b[]=foo(a);
void display() {
System.out.println(a[0]+a[1]+a[2]+ " "); //line no 9
System.out.println(b[0]+b[1]+b[2]+ " ");
}
public static void main(String[] args) {
HackerEarth he=new HackerEarth();
he.display();
}
private int[] foo(int[] a2) {
int b[]=a2;
b[1]=7;
return b;
}
}
如有任何建议,我们将不胜感激。
最佳答案
您正在使用对第一个数组的引用来覆盖 foo
方法中的值。要根据传递的值创建另一个数组,请考虑使用 Arrays.copyOf
:
private int[] foo(int[] a2) {
int b[] = Arrays.copyOf(a2, a2.length);
b[1]=7;
return b;
}
关于java - 为什么该方法会更改传递的数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60578824/