java - 无法减少 int 变量的值

标签 java variables int

我创建了 4 个类,一个 MainP 类,以及其他 Ex2Ex3Ex4 (3和4延伸2)。当我从一个减少另一个对象的 int 变量的对象调用 a 时,它仅在第一次调用时执行此操作。

这些是类:

例2:

protected int par;

public int getPar() {
    return par;
}

public void setPar(int par) {
    this.par = par;
}

例3:

private int par;

public Ex3(int par) {
    this.par = par;
}

public void bar(Ex2 b) {
    b.setPar(par - 10);
}

public int getPar() {
    return par;
}

public void setPar(int par) {
    this.par = par;
}   

Ex4 与 Ex3 相同。

主要:

public class MainP {
    public static void main(String[] args) {

        Ex3 kaka = new Ex3(100);
        Ex4 tana = new Ex4(100);

        kaka.bar(tana);

        System.out.println(tana.getPar());

        kaka.bar(tana);

        System.out.println(tana.getPar());
    }
}

输出:

90
90

我不明白为什么 par 在第一次调用时减少并在第二次调用时停止。我想它以某种方式进行了校准,但我不明白为什么。

编辑: 好吧,我明白了我的愚蠢错误,但我又犯了一个新错误。 我将方法更改为:

    public void bar(Ex2 b){
    b.setPar(b.par-=10);
}

现在我的输出是:

-10

-20

为什么该方法将 b.par 更改为 -10?如果我这样做: 塔纳.setPar(塔纳.par-=10);在main方法中,将变量更改为public,它不会将tana的值更改为-10,而是从100减少。

最佳答案

public void bar(Ex2 b){
    b.setPar(par - 10);
}

此处将 par - 10 的值设置为 b,其中 par 不是 b 的字段。因为它没有改变你 2 次,所以将 b par 字段设置为相同的值 - 90。

关于java - 无法减少 int 变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31886411/

相关文章:

java - 重新验证 JPanel 时闪烁

java - 在 Eclipse 内的新窗口中打开文件进行编辑

java - 在“>”上分割长字符串

mysql - 如何使用触发器检查mysql中的数据行?

c - 32 位与 64 位环境中的 int_max

java - 将文本文件中给定的两个数组合并到第三个数组中

java - 如何将 (00s...11s) 的数组,每个字符的二进制表示,转换为 char 的字符串

java - 将表达式重构为函数会对性能产生影响吗?

javascript - onclick 中的字符串

javascript - 在正则表达式字符集中使用变量