static修饰的变量
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.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将按照它们在类
中出现的先后顺序依次执⾏它们,每个代码块只会被执⾏⼀次

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。