黑马程序员技术交流社区

标题: 类在内存中存储的问题 [打印本页]

作者: 郭冬    时间: 2012-12-2 09:26
标题: 类在内存中存储的问题
java中当类被加载后,类中的成员变量是以什么形式存在的?
比如类 class student
          {
               char name;
          int age;
          showage()
          {
                 System.out.println(age);
               }
           }
现在我清楚showage这个函数存在于内存的方法区,但是像name和age这两个非静态的数据被加载后在内存的什么地方以什么样的形式存储,以能够使当程序中用类名声明对象时使对象中存在这些数据。
作者: 赵学刚    时间: 2012-12-2 11:50
class student
          {
               char name;
          int age;
          showage()
          {
                 System.out.println(age);
               }
           }
非静态成员被类加载后,存在于对内存中,当有某个该类的对象建立就可以通过该对象调用类的构造函数初始化该对象内的成员变量,这些成员变量在内存中都有默认初始值,比如char 的是'\u000000' ,你在本类的方法中调用成员变量age 实际是通过this对象调用的。
作者: 林剑    时间: 2012-12-2 12:16
类加载后不会给name、age两个成员变量分配内存空间,只有new一个student对象调用默认空参数构造函数才会在堆内存分配空间,默认初始化值char类型为null,int类型为0
作者: 郭冬    时间: 2012-12-7 10:08
赵学刚 发表于 2012-12-2 11:50
class student
          {
               char name;

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

谢谢。我就是想知道,类加载后不给成员变量分配内存空间,new一个对象后是如何知道要建立相应的成员变量的




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