将值从方法返回到另一个方法

有人可以告诉我为什么返回的值是3而不是8.来自addFive方法的return x语句是否会改变main方法中x的值?

 public class App { public static void main(String[] args) { int x=3; addFive(x); System.out.println("x = " + x); } private static int addFive(int x) { x += 5; return x; } } 

你想要x=addFive(x); 而不仅仅是addFive(x)addFive(x)调用addFive(x)不会将返回值应用于任何变量。

您必须将返回值设置为变量,否则它将丢失,并且您正在main方法中检索“x”的值。 这样做是为了捕获返回值。

  public static void main(String[] args) { int x=3; x = addFive(x); System.out.println("x = " + x); } 

如果您只想查看返回的值而不存储它,您甚至可以将函数调用放在System.out.println

  public static void main(String[] args) { int x=3; System.out.println("x = " + addFive(x)); } 

像其他人一样,你需要分配你的回报价值。 因为你正在做“addFive(x)”而不是“x = addFive(x);” 你只是在main中打印“x”的实例,而不是获得函数返回的值。

这是因为main函数中的“x”是实例变量,addFive()中的“x”是局部变量。 即使它们具有相同的名称,它们也不是同一个变量。 这可能有点澄清 – http://www.tutorialspoint.com/java/java_variable_types.htm

当您在java中调用方法而没有为任何变量赋值时,更改将在方法调用中发生,之后该值将丢失并返回到您指定的值。 要查看结果你应该做那个System.out.println(addFive(x)); 但如果要更改x的值,则必须指定x = addFive(x);

您正在使用x调用方法addFive(int x) ,但不将返回值分配给任何内容。 因此,在main()的范围内x仍然像以前一样,3 – 这就是正在打印的内容。 因此,您可以将返回的值存储到x本身:

 x = addFive(x); 

或者在print语句中进行函数调用:

 System.out.println("x = " + addFive(x)); 

该方法确实返回一个值,但是当你返回它时你必须将值设置为一个变量,否则它将如何知道你要将值返回到哪个变量? 您可以拥有10个变量,如果您只是调用该方法,它将如何知道将该数字返回哪个变量? 这就是为什么你必须将返回的数字设置为这样的变量:

 x = addFive(x); 

因为你根本就没有使用你的函数计算。 它不会改变x的值,它会返回新值。

你应该做的事情如下:

 int y = addFive(x); 

main函数中的值与addFive(int x )函数中的值完全不同。 您将main从main发送到addFive(int x)方法。

JVM制作x的副本并将其发送到addFive(int x)方法。 然后xaddFive(int x)方法中更改。 但是main()方法中的x保持不变。

如果要从main方法获取addFive(int x)返回的更改值,可以执行以下操作 –

 int returnedValueFromAddFive = addFive(x) 

希望它会有所帮助。
非常感谢。