class StaticTest{ static int x=1; int y; StaticTest(){ y++; } public static void main(String[] args){ StaticTest st=new StaticTest(); System.out.println("x="+x); System.out.println("st.y="+st.y); st=new StaticTest(); System.out.println("st.y="+st.y); } static {x++;} }
时间: 2024-04-21 20:28:40 浏览: 84
JavaSE024static与final使用陷阱续..pdf
这段代码的输出结果是:
x=2
st.y=1
st.y=1
首先,在类加载时会执行静态代码块,此时 x 的值会加 1,因此 x 的值为 2。
在 main 方法中,首先创建了一个 StaticTest 类的对象 st,此时 y 的值会被初始化为 0,然后执行构造方法,使得 y 的值加 1,因此 st.y 的值为 1。
接着,再次创建 StaticTest 类的对象 st,此时 y 的值会被重新初始化为 0,然后执行构造方法,使得 y 的值加 1,因此 st.y 的值仍为 1。
阅读全文