通过方法更改变量

时间:2015-02-06 07:17:45

标签: java core

为什么我的输出等于5?我期待6,因为在“addthenumber(x);”之后line,方法被调用,我想的是方法执行计算,5变为6.所以sysout应该打印6,但它是如何5?

public class CodeMomkeyPassingvalue 
{
    public static void main(String[] args) 
    {
        int x = 5;
        addthenumber(x);
        System.out.println(x);
    }

    private static void addthenumber(int number) 
    {
        number = number+1;
    }
}

输出:

5

3 个答案:

答案 0 :(得分:6)

方法的参数按值按值传递,而不是通过引用传递。这意味着不是变量本身,而是只将变量的值传递给方法。

方法number中的变量addthenumberx方法中的变量main不是同一个变量。当您更改number的值时,它对x中的变量main没有任何影响。

答案 1 :(得分:0)

Java遵循call by value范例,因此调用函数中的值不会更改。如果您想要更改值,则必须在添加1后返回它;

public static void main(String[] args) 
{
    int x = 5;
     x = addthenumber(x);
    System.out.println(x);
}

private static int addthenumber(int number) 
{
    return number+1;
}

答案 2 :(得分:0)

代码

 {

        int x = 5; // declare x = 5 here

        addthenumber(x); // calling function, passing 5

catch is here - 参数按值传递,而不是按参考传递。 x本身未传递,只有x的值传递给方法。

        System.out.println(x); // printing same x value here, ie 5

    }

private static void addthenumber(int number){

    number = number + 1;  // 1 added to number locally, and is referencing inside method only.


}