62,626
社区成员
发帖
与我相关
我的任务
分享
static
{
num=15;
}
public static int num=0;
//可以想象成这样:
static
{
num=15
num=0;
;
}
public static int num;
//打印 num就是0;
//同理
public static int num=0;
static
{
num=15;
}
//可以想象成
public static int num;
static
{
num=0;
num=15;
}
不知道对不对,没有权威性,大佬可以解释下
public static int num=15;
//分解成
public static int num;
static{
num=15;
}
public class Test {
public static int a;
public static int b;
public static Test eee = new Test();
static{
b = 0;
}
public Test(){
a ++;
b ++;
}
public void printAB(){
System.out.println(a + "," + b);
}
public static void main(String[] args){
new Test().printAB();
}
}
public class Test {
public static int a;
public static int b;
public static Test eee = new Test();
static{
b = 0;
System.out.println("static");
}
public Test() {
a++;
b++;
System.out.println("constructor");
}
public void printAB() {
System.out.println(a + "," + b);
}
public static void main(String[] args) {
new Test().printAB();
}
}
执行结果:
constructor
static
constructor
2,1
可知‘public static Test eee = new Test();’先于static块执行了,所以b的值为:0->1->0->1,即为1。