我创建了 4 个类,一个 MainP
类,以及其他 Ex2
、Ex3
和 Ex4
(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/