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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭冬 中级黑马   /  2012-12-2 09:26  /  1378 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中当类被加载后,类中的成员变量是以什么形式存在的?
比如类 class student
          {
               char name;
          int age;
          showage()
          {
                 System.out.println(age);
               }
           }
现在我清楚showage这个函数存在于内存的方法区,但是像name和age这两个非静态的数据被加载后在内存的什么地方以什么样的形式存储,以能够使当程序中用类名声明对象时使对象中存在这些数据。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

4 个回复

倒序浏览
class student
          {
               char name;
          int age;
          showage()
          {
                 System.out.println(age);
               }
           }
非静态成员被类加载后,存在于对内存中,当有某个该类的对象建立就可以通过该对象调用类的构造函数初始化该对象内的成员变量,这些成员变量在内存中都有默认初始值,比如char 的是'\u000000' ,你在本类的方法中调用成员变量age 实际是通过this对象调用的。
回复 使用道具 举报
类加载后不会给name、age两个成员变量分配内存空间,只有new一个student对象调用默认空参数构造函数才会在堆内存分配空间,默认初始化值char类型为null,int类型为0
回复 使用道具 举报
赵学刚 发表于 2012-12-2 11:50
class student
          {
               char name;

谢谢你的回答,有很大帮助
回复 使用道具 举报
林剑 发表于 2012-12-2 12:16
类加载后不会给name、age两个成员变量分配内存空间,只有new一个student对象调用默认空参数构造函数才会在 ...

谢谢。我就是想知道,类加载后不给成员变量分配内存空间,new一个对象后是如何知道要建立相应的成员变量的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马