class ppp
{
public static int a;        //应该是默认为0
public int b = a++;        //这里应该自增
public static void main(String args[])
{
System.out.println(a);  //输出为 0,怪了!!!
}
 }

解决方案 »

  1.   

    看你的代码!
    b不是静态属性,它只有在new一个ppp类的对象时才会被初始化
    也就是说只有当new一个ppp类时,才执行 a++
    所以你的程序里没有自加
      

  2.   

    public int b = a++;        //写在main方法里
      

  3.   

    public int b = a++;
    这句到目前为止还没有执行;
      

  4.   

    public static int a;  是静态属性,而 b里面的是实例属性,你的main方法里根本不会调用b的那行代码。
      

  5.   

    public static int a;  是静态属性,而 b里面的是实例属性,你的main方法里根本不会调用b的那行代码。
      

  6.   

    如一楼所说你没有创建一个ppp类,所以就没有加加
      

  7.   

    我的意思是a++;
    是一个执行语句。为什么可以不放在main方法里执行呢???
    是不是JVM的漏洞啊。
      

  8.   

    你还是没想着去弄清楚执行顺序你这个代码是先初始化静态变量a,然后执行了静态方法main,最后才是初始非静态变量b
      

  9.   

    哦,你这里没有new 这个类的实例,根本就不会去初始化非静态变量b,也就不会去执行a++了
      

  10.   


    程序执行应该是从main()开始的吧,
    你这个代码是先执行了静态方法main,然后执行初始化变量a,非静态变量b没用上。
      

  11.   

    如果new了一个ppp后,结果就是你想要 的了,没有执行到a++,呵呵
      

  12.   

    MAIN方法是静态方法,不能调用非静态属性B,所以方法里的A依然是静态属性A的值
      

  13.   

    受不了了。
    static的属性,怎么可能改变?
      

  14.   

    还有调用B,肯定是不会执行A++的,这里在MAIN中只是调用了默认初始化的A
      

  15.   


    楼主的意思应该是想问为什么a++;没有被执行吧? public static int a;  //静态属性,与类有关,类定义出来,a就出来了 public int b = a++; //实例属性,与对象有关,只有实例化类后(既new个),b才会有值.
      

  16.   


    为什么受不了啊,static怎么就不能改变了,这里不是static的问题
      

  17.   

    程序运行结束都没执行过
     public int b = a++;