愿你 发表于 2018-10-20 08:56:38

为什么第五行的运行结果为10???

class Value{
static int c=0;
Value(){
    c=15;
}
Value(int i){
    c=i;
}
static void inc(){
    c++;
}
}
class Count{
public static void prt(String s){
    System.out.println(s);
}
    Value v=new Value(10);
    static Value v1,v2;
    static{
      prt("v1.c="+v1.c+"v2.c="+v2.c);
      v1=new Value(27);
      prt("v1.c="+v1.c+"v2.c="+v2.c);
      v2=new Value(15);
      prt("v1.c="+v1.c+"v2.c="+v2.c);
    }
public static void main(String[] args){
    Count ct=new Count();
    prt("ct.c="+ct.v.c);
    prt("v1.c="+v1.c+"v2.c="+v2.c);
    v1.inc();
    prt("v1.c="+v1.c+"v2.c="+v2.c);
    prt("ct.c="+ct.v.c);
}
}



运行结果如下:
v1.c=0v2.c=0
v1.c=27v2.c=27
v1.c=15v2.c=15
ct.c=10
v1.c=10v2.c=10
v1.c=11v2.c=11
ct.c=11

由矣月刹 发表于 2018-10-25 15:27:11

static代码块先于Value v=new Value(10)执行

由矣月刹 发表于 2018-10-25 15:39:09

求问这句话可以用static来创建实例对象吗
static Value v1,v2;
页: [1]
查看完整版本: 为什么第五行的运行结果为10???