{
int[] n = new int[4];
n[0]=1;
n[1]=3;
n[2]=4;
n[3]=5;
for(int i=0; i<4; i++)
{
System.out.print(n[i]+ " ");
}
menjava(n);
System.out.println();
for(int i =0;i<4;i++)
{
System.out.print(n[i]+ " ");
}
}
public static void menjava(int[] a)
{
a[0]=1*10;
a[1]=3*10;
a[2]=4*10;
a[3]=5*10;
}
}
http://imgur.com/0CNqY9A //控制台中的结果
{
int n = 1;
System.out.println(n);
menjava(n);
System.out.println(n);
}
public static void menjava(int st)
{
st = 4;
}
}
http://imgur.com/dAqzuez //控制台中的结果
那么为什么返回数组,但整数保持不变(我认为应该是这样)。我无法找到有关数组在void函数中返回的原因。
答案 0 :(得分:0)
不返回或更改数组的引用。
引用的数组已更改。
int[] n = new int[4];
在此代码中,n
是数组的引用,并且在将其传递给方法时会复制此引用。此参考不会更改。
答案 1 :(得分:0)
这里的问题是Java是一种值传递语言。这意味着在您的情况下,您提供的方法menjava可能是一个临时数组,其中包含与原始数组n相同的值。因此,当这个数组传递给menjava时,它会进行计算,但是对于你的主要方法不知道的临时数组。
这里最简单的解决方法是让你的menjava方法返回它所处理的数组,并在调用函数中将数组设置为该值:
public static int[] menjava(int[] a){
//changes to array a
return a;
}
然后在你的调用函数中:
{
//your other code
n = menjava(n);
//the rest of your code
}