cod*_*ing 1 java methods return
所以,我认为我误解了方法如何返回值.我不明白为什么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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
number is: 0
3 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
您可能需要熟悉"按值传递","按引用传递"以及对象是引用(通过方法调用之间的值传递)的概念.
"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;
}
Run Code Online (Sandbox Code Playgroud)
然后,传递给修改的"列表"永远不会被修改,因为modify方法中的"list"被更改为完全指向另一个对象.