Java:void方法返回值?

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)

sel*_*bie 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;
}
Run Code Online (Sandbox Code Playgroud)

然后,传递给修改的"列表"永远不会被修改,因为modify方法中的"list"被更改为完全指向另一个对象.