class Pac{
private static int a;
public static void main(String[] args){
modify(a);
System.out.println(a);

}
public static void modify(int a){
a++;
}
}
为什么输出的不是1而是0?

解决方案 »

  1.   

    为什么要输出0而不是1?
    class Pac{
      private static int a;
      public static void main(String[] args){
        modify(this.a);
        System.out.println(this.a);
      }
      public static void modify(int a)//此a非彼a
      {
        this.a++;
      }
    }
      

  2.   

    你要想输出1就得按照我上面写的那样按照你的代码,方便起见,不相关的变量我们换一个名字
    class Pac{
        private static int a;
        public static void main(String[] args){
            modify(a);
            System.out.println(a);    
            
        }
        public static void modify(int b){
            b++;
        }
    }这样就好懂了你的代码里,modify里的a和之前的a没有关系,可以看成另外一个变量
      

  3.   

    class Pac{
       public static int a;
        public static void main(String[] args){
            a = 5;
            System.out.println(a);
            modify(a);
            System.out.println(a);
            
        }
        public static void modify(int a){
            a++;
            System.out.println(a);
        }
    }输出为:5 
            6
            5
    希望帮助楼主理解
      

  4.   

    因为int类型是基本类型,在调用方法传递过去的只是这个值得copy。如果传过去的是一个实例,那么就会发生变化。
      

  5.   

    因为int是基本类型,只传值,而不传引用reference
    你用Integer 就可以传引用了