为什么以下的程序运行的结果是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);
}
}
interface Face
{
int counter=40;
}
public class Test implements Face
{
private static int counter;
public static void main(String args[])
{
System.out.println(++counter);
}
}
{
int counter=40;
}中counter的值.
编译器会先执行它
如果使用接口中的counter,那就把private static int counter;去掉,这样就不能覆盖。
但这样程序就错了
因为接口中定义的方法和变量都是public final static的,所以
++counter
会出错误。
{
private static int counter;
public static void main(String args[])
{
System.out.println(++counter);
}
}
Test 方法中,counter被定義成private static int,他的默認值是0,並且覆蓋了Face中counter的初始值。在執行main方法后打印的就是1了。
System.out.println(++counter);
相当于
static int k;
k=++counter;
System.out.println(k);所以打印1
{
int counter=40;//相当与public static final counter;不可以修改
}
private static int counter;//是这个变量,初始化为0?他是一个局部变量,一定要初始化,所以错误所以这个程序不能编译!!!
看错了呵呵
所以这个程序是一!!!