class AA
{
public static int f()
{
return a++;
}
public static int a;  
public static int b = f(); public static void main(String args[])  
{
System.out.println(b);  //我觉得应该输出:1
}}
还有一个问题: 为什么在main之外居然可以合法调用到f()方法

解决方案 »

  1.   

    ++a 才是1啊
    方法f()是ststic静态的 
      

  2.   

    1.因为是a++,不是++a,所以输出是0不是1。
    2。因为f()前面的修饰符是public static ,而AA的访问权限是包访问权限。
      

  3.   

    a++的问题
      public static int f()
        {
            a++;
         return a;
        }
    结果为1
    为什么在main之外居然可以合法调用到f()方法
    f()是静态的
      

  4.   

    a++的问题
      public static int f()
        {
            a++;
         return a;
        }
    结果为1
    为什么在main之外居然可以合法调用到f()方法
    f()是静态的
      

  5.   

    ++是自增运算符它有前缀和后缀
    如果是前缀++a就是先改变a表示的存储单元的值,然后再使用其值。
    a++正好相反。
    至于3楼那样的写法,也就是a++和++a也就没有区别了。这里a的值都已经改变了。这里静态变量和静态方法已经在内存中开辟了空间了在类还没有被实例化的时候就可以调用了
    所以你可以在main外调用静态变量和方法了。
      

  6.   

    对的啊,++a才会是1
    因为f是静态方法嘛,呵呵,静态方法是在类初始化的时候就初始化了,所以在main里面可以调用,楼主可以多看看编程思想,这个东西很多的,呵呵,加油加油啦~~~~~
      

  7.   

    方法是静态的,静态变量在类还没有被实例化, public static void main(String args[])  是静态的,可以调用方法f()
      

  8.   

    在main之外居然可以合法调用到f()方法为什么if这些语名就必须出现在main方法中....
      

  9.   

    public class AA{
        public static int f()
        {
         a++ ;
            return a;
        
        }
        public static int a;  
        public static int b = f();     public static void main(String args[])  
        {
            System.out.println(b);  //我觉得应该输出:1
        }
    }你哪里使用的是return a++ ;
    这里由于下面没有对a的操作了所以返回的是0。
    而如果你先做a++在返回a的话a就会等于1