【问题标题】:Java adding to an integer using methodsJava使用方法添加到整数
【发布时间】:2014-04-08 04:31:52
【问题描述】:

我遇到了一个相对简单的问题:我正在尝试使用另一个类的方法来添加到我的主类中的整数,但我的整数的值没有增加,值保持不变,这是代码是什么样子的:

public class prog{

/**
 * @param args
 * @throws MidiUnavailableException 
 */

public static void main(String[] args) {
int num = 11;
thing.add(num);
System.out.println(num);
}
}

而“事物”类是:

public class chords2 {

static void add(int val){
    val = val+9;

}

}

非常感谢有关如何使其工作的任何提示

【问题讨论】:

标签: java methods static void addition


【解决方案1】:

在 Java 中,int 是按值传递的。如果你想add你应该返回值并重新分配它。

static int add(int val){
    return val+9;
}

然后,调用它,

int num = 11;
num = thing.add(num);

【讨论】:

  • 不只是int,一切都是按值传递的。
  • @Keppil,没错,但大多数对象都是引用,我不想深入讨论引用与值类型。所以我做了一个有点不完整的真实陈述。
  • 我想还不错。
  • 谢谢,我只需要重新分配这个值就可以了
【解决方案2】:

发生的是Java is always pass-by-value. 所以,在你的例子中,如果你在方法内部修改整数val,它不会在外部产生影响。

你能做什么?

您可以声明您的方法返回一个integer,然后将结果分配给您想要的变量:

static int add(int val){
    return val + 9;    
}

当你调用它时:

int num = 11;
num = SomeClass.add(num); // assign the result to 'num'

【讨论】:

  • @AmirBawab 你为什么这么说?
  • 是的@Amir,Java 中的一切都是按值传递的。
  • @AmirBawab 我会推荐你​​阅读this
  • 是的,这令人困惑。尽管如此,我的回答是正确的,所以如果你投了反对票,请撤消它。 另外,你说“值的意思是,变量里面的数据的副本……”,但是注意对象的值是reference .
【解决方案3】:

你的事物类中应该有一个私有的 int val,否则在你的 add() 方法中添加“return”语句并将返回值设置回调用位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    相关资源
    最近更新 更多