public class aaa {
    private static int a;    public static void main(String[] args) {
     method(a);
     System.out.println(a);
    }
    public static void method(int a){
     a++;
    }
}老大能否解释下为什么输出结果是0.我怕自己想的不对,谢谢~

解决方案 »

  1.   

    private static int a;
    属性没赋值默认为0.
      

  2.   

    a++ ,是先赋值,在++ 但是++是有条件的光System.out.println(a);  是不会+的,除非参与运算。
    可以参考我的博客
    http://blog.csdn.net/suncheng_hong/archive/2008/11/13/3293659.aspx
      

  3.   

    method方法中的a++对private static int a; 是没有影响的,所以System.out.println(a); 还是private static int a; 默认值0
      

  4.   

    可Method是静态的,不是说静态方法里面不能操作非静态变量么?那这个参数是?
      

  5.   

    1.private static int a; 默认0值
    2.public static void method(int a)属于传值调用,不会改变参数值。
      

  6.   

    method()方法中的a++是对方法参数a进行自增操作
    对类属性a无任何影响
    System.out.println(a);中的a是类属性a
    由于main()没有对类属性a进行任何操作
    所有这里输出的是默认值0
      

  7.   

    method方法里的a是局部变量,a++是局部变量a做自加运算,System.out.println(a); 输出的是类变量,类变量a默认的是0。
      

  8.   

    Java中对值的传递是通过引用的传递来实现的,对于复杂数据类型调用method()后,其属性都会发生改变,而对于基本数据类型和String类型,不会改变!~~
      

  9.   

    你把输出语句写到method()里面试一试,   再想一想