为什么这个打印输出1而不是2?我该如何改进?

时间:2016-10-01 09:04:02

标签: java

鉴于此代码:

public class Test {

  public void add(int x){
    x++;
  }

  public static void main(String args[]){
    Test t = new Test();
    int a = 1;
    t.add(a);
    System.out.println(a);
  }
}

我只想打印出2而不是1.我想我称这种方法错了。 你能帮我理解为什么吗?

3 个答案:

答案 0 :(得分:1)

java按值传递,这意味着您的变量被序列化并且其值被发送到方法。

要打印2,您需要使方法在增量后返回值。

答案 1 :(得分:1)

您的方法被宣布为无效,因此它不会返回任何内容。变量 a 在使用它来调用方法 add 时将始终保持不变。

它应该是,为了您的目的:

public int add(int x){
   return x++;
}

答案 2 :(得分:1)

您的代码中存在很多错误,您应该正确学习Java。它表明你并不了解一元运算符,它们与Java没有严格的关系。

然而,其中一个可能的解决方案(有很多)是将代码更改为:

public class Test {

  public int add(int x){
    return ++x;
  }

  public static void main(String args[]){
    Test t = new Test();
    int a = 1;
    a = t.add(a);
    System.out.println(a);
  }

}

再次,在尝试任何练习或在SO上发布之前,要正确学习Java。 下次,在发布新问题之前,请查看how to ask

相关问题