为什么以下的程序运行的结果是1?
interface Face
{
         int counter=40;
}
public class Test implements Face
{
private static int counter;
public static void main(String args[])
{
System.out.println(++counter);
}
}

解决方案 »

  1.   

    显示的是private static int counter中的counter值,而不是interface Face
    {
             int counter=40;
    }中counter的值.
      

  2.   

    static 
    编译器会先执行它
      

  3.   

    补充一下:
    如果使用接口中的counter,那就把private static int counter;去掉,这样就不能覆盖。
    但这样程序就错了
    因为接口中定义的方法和变量都是public final static的,所以
    ++counter
    会出错误。
      

  4.   

    public class Test implements Face
    {
    private static int counter;
    public static void main(String args[])
    {
    System.out.println(++counter);
    }
    }
    Test 方法中,counter被定義成private static int,他的默認值是0,並且覆蓋了Face中counter的初始值。在執行main方法后打印的就是1了。
      

  5.   

    可是打印的是++counter的值,而不是counter++的值,怎么会是1,应该为0吧!
      

  6.   

    private static int counter; counter没有被赋值,默认为0。counter先加1,然后再被打印。
    System.out.println(++counter);
    相当于 
    static int k;
    k=++counter;
    System.out.println(k);所以打印1
      

  7.   

    interface Face
    {
             int counter=40;//相当与public static final counter;不可以修改
    }
    private static int counter;//是这个变量,初始化为0?他是一个局部变量,一定要初始化,所以错误所以这个程序不能编译!!!
      

  8.   

    private static int counter;//是这个变量,初始化为0?他是一个事例变量,
    看错了呵呵
    所以这个程序是一!!!