黑马程序员技术交流社区

标题: 关于static静态成员与对象存在顺序 [打印本页]

作者: 黄长利    时间: 2012-3-22 17:30
标题: 关于static静态成员与对象存在顺序
本帖最后由 黄长利 于 2012-3-22 17:47 编辑

在类中关于静态成员及对象的加载存在顺序问题,代码如下:
  1. class Person
  2. {
  3.         String name; //成员变量,实例变量,只有对象被创建时才出现在堆内存
  4.         static String country = "CHiNA";  //静态的成员变量,即 类变量。
  5.         public void show()
  6.         {
  7.                 System.out.println("Name:"+name+",Country:"+country);
  8.         }

  9. }
复制代码
我知道类中静态成员是优先于对象而存在的,就是说在对象没创建之前,对于本例中的 country 已经被加载在方法区,
但是我一直疑惑:类的加载,不是随着对象的创建,需要调用类时,类才开始被加载的吗? 那么在对象创建之前,静态成员是
存放在哪里呢?

作者: 张锐    时间: 2012-3-22 17:34
既然LZ类定义成静态的了,说明你可以不用创建对象直接通过类名.变量名调用了啊。
作者: 陈汉帆    时间: 2012-3-22 23:47
类的加载不一定要伴随对象的创建,需要某个类时,类加载器加载这个类,然后静态成员存储到方法区
作者: 孙国军    时间: 2012-3-22 23:47
类的加载,不是随着对象的创建,需要调用类时,类才开始被加载的吗? 那么在对象创建之前,静态成员是
存放在哪里呢?


类是在创建对象时才会用到,并且由jvm加载到内存中,而随着类加载的静态成员是被放在方法区的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2