通过方法更改变量

Changing variable by method

为什么我得到的输出等于 5?我期待 6,因为在 "addthenumber(x);" 行之后,调用了方法,我想的是方法执行计算,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

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

方法addthenumber中的变量numbermain方法中的变量x不是同一个变量。当您更改 number 的值时,它不会对 main 中的变量 x 产生任何影响。

Java 遵循 call by value 范式,因此调用函数中的值未更改。如果您想更改值,您必须在添加 1 后 return 它;

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;
}

代码下方

 {

        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.


}