通过方法更改变量
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
中的变量number
与main
方法中的变量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.
}
为什么我得到的输出等于 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
中的变量number
与main
方法中的变量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.
}