所以,我认为我误解了方法如何返回值。 我不明白为什么list [0]在输出中是3,因为那是一个void方法,它不会将任何东西返回给main方法...如果void方法实际上可以返回值,那么为什么num仍然是0 .....不会数也变成3? 或者void方法不返回任何值,除了数组?
public static void main (String []args){
int []list = {1,2,3,4,5};
int number = 0;
modify(number, list);
System.out.println("number is: "+number);
for (int i = 0; i < list.length; i++)
{
System.out.print(list[i]+" ");
}
System.out.println();
}
public static void modify (int num, int []list){
num = 3;
list[0] = 3;
}
输出:
number is: 0
3 2 3 4 5
答案 0 :(得分:5)
您可能需要熟悉“按值传递”,“按引用传递”以及对象是引用(通过方法调用之间的值传递)的概念。
“number”是一个简单的整数 - 按值传递给modify方法。因此,即使分配给“num”的值在方法中发生更改,此方法的调用者使用的原始变量也保持不变。
“list”也按值传递,但“list”是一个对象,因此您将对此对象的引用(按值)传递给modify方法。因此,如果更改方法中对象的内部,则更改调用者引用的同一对象。
现在,如果你这样做了:
public static void modify (int num, int [] list)
{
num = 3;
int [] newlist = {9,8,7,6,5,4};
list = newlist;
newlist[0] = 3;
}
然后传递给modify的“list”永远不会被修改,因为modify方法中的“list”被改为指向一个不同的对象。
答案 1 :(得分:4)
它不会返回任何内容,只是修改变量list[0]
。
答案 2 :(得分:0)
如上所述,该方法实际上并没有返回值...它正在修改数组中的第一个值。输出反映了'modify'
修改的值答案 3 :(得分:0)
list[0] = 3;
是您提供输出3的原因。它与num
无关,您确实不返回任何内容。您只需修改数组的内容。