为什么我的输出等于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
答案 0 :(得分:6)
方法的参数按值按值传递,而不是通过引用传递。这意味着不是变量本身,而是只将变量的值传递给方法。
方法number
中的变量addthenumber
与x
方法中的变量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.
}