A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄长利 中级黑马   /  2012-3-22 17:30  /  1965 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄长利 于 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 已经被加载在方法区,
但是我一直疑惑:类的加载,不是随着对象的创建,需要调用类时,类才开始被加载的吗? 那么在对象创建之前,静态成员是
存放在哪里呢?

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

3 个回复

倒序浏览
既然LZ类定义成静态的了,说明你可以不用创建对象直接通过类名.变量名调用了啊。
回复 使用道具 举报
类的加载不一定要伴随对象的创建,需要某个类时,类加载器加载这个类,然后静态成员存储到方法区
回复 使用道具 举报
类的加载,不是随着对象的创建,需要调用类时,类才开始被加载的吗? 那么在对象创建之前,静态成员是
存放在哪里呢?


类是在创建对象时才会用到,并且由jvm加载到内存中,而随着类加载的静态成员是被放在方法区的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马