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

对静态方法和静态域不太明白,谁能指点一下?
对静态域和静态方法,我还是觉的不太明白.
  例如 Student 这个类, 里面的 ID 是一个静态域,在Student的构造函数里面加入类似 ID++; 的语句
  这样就可以实现每生成一个Student的实例,让ID加1,
  同样Student再加入一个静态方法,
  public static void setNum(int i)
  {
  ID = i;
  }
  就可以控制ID的初始值了,如setNum(10000),则ID从10001开始算.

我的疑问在于, 一般的类在在生成实例之后,在内存中分配空间,通过实例来调用方法或域,那么对于静态域和静态方法,
它们是在何时分配内存空间,什么时候才能调用?


------解决方案--------------------
静态域是在类加载的时候分配空间,静态方法是在类加载的时候加载。
------解决方案--------------------
对于静态域和静态方法, 任何时候都可能调用,调用时java虚拟机会先为静态域分配空间
------解决方案--------------------
当你声明的时候,比如你一出现Student这么个信号,如果有static域\变量\方法它就会加载类,并在这个时候对其操作(初始化或者操作域)