java基础static变量初始化和赋值的例子
1.代码案例public class A {public static int x;static{x = B.y+ 1;}}public class B {public static int y = A.x+ 1;public static void main(String[] args) {System. out. println(String . format( "X:%d,Y:%d", A.
·
1.代码案例
public class A {
public static int x;
static
{
x = B.y+ 1;
}
}
public class B {
public static int y = A.x+ 1;
public static void main(String[] args) {
System. out. println(String . format( "X:%d,Y:%d", A.x, y));
}
}
2.输出的结果是
X:1,Y:2
3.原理解释
1. main(String[] args)方法是java程序入口,所以先加载类B
2. 初始化类B(y=0,备注:先初始化再赋值)
3. 执行到public static int y = A.x+ 1;去加载类A并初始化,此时A.x=0,然后执行
static{ x = B.y+ 1;} 这里因为B.y只是初始化完成还没有完成赋值,所以此时B.y=0
执行完静态代码块A.x完成赋值x=0+1,即x=1。
4.A类加载和初始化完成,继续执行public static int y = A.x+ 1; 此时,y=1+1,即y=2 B.y完成赋值
5.继续执行main方法完成x和y的格式化输出,即 X:1,Y:2
ps:static代码块
static代码块也叫静态代码块,是在类中独立于类成员的static语句块,
可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会
执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类
中出现的先后顺序依次执行它们,每个代码块只会被执行一次
更多推荐




所有评论(0)