Java:void方法返回值?

时间:2013-12-08 02:03:15

标签: 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;
}

输出:

number is: 0

3 2 3 4 5 

4 个答案:

答案 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无关,您确实返回任何内容。您只需修改数组的内容。