日期:2014-05-20  浏览次数:20701 次

一道关于java的static的知识的问题,请大侠帮助,谢谢
写出以下程序的运行结果。
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++;}
}

这道题的结果不是那么重要,重要的是这道题的考的知识点是什么,请高手详细解释一下,谢谢

------解决方案--------------------
额。楼上的以及楼下的不懂就不要回复了吧?

楼主,你要知道类的加载顺序:
在JVM管理的内存中:
内存分为三块:堆区、栈区、方法区

首先将类信息加载到方法区中,包括静态变量、常量
静态代码块,
而且静态代码块只执行一次,在类加载时候执行


不明白在问吧。
这个只是类加载顺序。
建议楼主写个程序试试。

------解决方案--------------------
LS的各位们,你们真的觉得 这道题考查什么类加载顺序和内存什么吗?

LZ的标题其实就写的很清楚了,就是考查static的。而且事实就是考查static的啊。

static 的属性和方法都是类的变量,不管实例化多少个该类的对象,都只有一个。
如上面的“x”就是,不管实例化多少就一个。
但是"y"是成员变量。每一个该类的对象都有自己的y。