class D{
public static void main(String[] args){
int d = 21;
Dec dec = new Dec();
dec.decrement(d);
System.out.println(d);
}
}
class Dec{
public void decrement(int decMe){
decMe = decMe-1;
}
}
运行结果:输出的是21,为什么不是20.
public static void main(String[] args){
int d = 21;
Dec dec = new Dec();
dec.decrement(d);
System.out.println(d);
}
}
class Dec{
public void decrement(int decMe){
decMe = decMe-1;
}
}
运行结果:输出的是21,为什么不是20.
所以decrement弹栈后栈内的局部变量decMe也就被回收了
Dec dec = new Dec();
dec.decrement(d);
System.out.println(d);你调用的方法和你输出的值无关。输出的仍然是d的值 所以是21
class D{
public static void main(String[] args){
int d = 21;
Dec dec = new Dec();
d=dec.decrement(d);
System.out.println(d);
}
}
class Dec{
public int decrement(int decMe){
return decMe-1;
}
}
public static void main(String[] args){
int d = 21;
Dec dec = new Dec();
dec.decrement(d);
}
}
class Dec{
public void decrement(int decMe){
decMe = decMe-1;
System.out.println(decMe);
}
}
}你试试这个呢 这个输出值才是20吧 你那个方法只是去吧d减1再赋值给decMe,但最终没有返回给主函数 ,所以你输出的还是你一开始定义的d
二、decrement一定要传回来才能用的啊。我改进的:
public class D {
public static void main(String[] args) {
int d = 21;
int s;
Dec dec = new Dec();
s = dec.decrement(d);
System.out.println(s);
}
}class Dec {
public int decrement(int decMe) {
decMe = decMe - 1;
return decMe;
}
}
因为你只是将int类型变量D的值传给了new出来的实例使用,不影响原来那个D,
然而变量D本身是没有改变的。就相当于你有100块钱,朋友找你借100块钱打牌输了1块钱,
但是朋友输了是朋友的事,他的100块依旧得还你。
你100块钱的资产是不会因为你朋友输钱而改变的。
为什么要输出d呢