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.

解决方案 »

  1.   

    基本类型的值传递是数值的拷贝,方法里面如何操作影响不到原来int d = 21的值
      

  2.   

    为什么不输出decme
      

  3.   

    或者返回一会decme
      

  4.   

    因为你在decrement方法中更改了入参但是没有返回值 
    所以decrement弹栈后栈内的局部变量decMe也就被回收了
      

  5.   

    int d = 21;
    Dec dec = new Dec();
    dec.decrement(d);
    System.out.println(d);你调用的方法和你输出的值无关。输出的仍然是d的值  所以是21
      

  6.   

    this.decMe=decMe;就好了,自己定义的人decMe系统分不清是那个,
      

  7.   

    首先是没有返回值 其次是 new一个对象 就开辟一个内存空间 调用的地方和new一个对象 在内存方面不是一个地方 所以说你-1仅仅是new的那个对象变量值-1 调用的地方还是不变的 下面代码是我改的 没测试 应该差不多
    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;
    }
    }
      

  8.   

    class D{
    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
      

  9.   

    一、因为你声明了int d = 21,所以就输出了21。
    二、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;
    }
    }
      

  10.   

    第一:你传过去的D是给实例用的第二:你调用的方法没用返回值第三:你打印的依旧是原来的那个D,
    因为你只是将int类型变量D的值传给了new出来的实例使用,不影响原来那个D,
    然而变量D本身是没有改变的。就相当于你有100块钱,朋友找你借100块钱打牌输了1块钱,
    但是朋友输了是朋友的事,他的100块依旧得还你。
    你100块钱的资产是不会因为你朋友输钱而改变的。
      

  11.   

    建议你先去理解下堆和栈。还有javase的必学基础,网上搜javase基础。。有好的博客文章
      

  12.   

    System.out.println(d);
    为什么要输出d呢
      

  13.   

    java没有类似c++引用的东西吗,能不能new一个integer传进去,修改的结果自动更新到外边啊