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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔青山 中级黑马   /  2014-2-26 09:24  /  1275 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 乔青山 于 2014-2-26 09:36 编辑

查了好多网页,也在论坛问过,可惜还没有搞明白,可能是我问的不大明白。普遍认为呢,是放在堆中。但是,大家说放在堆中是因为new一个对象的时候,加载了类的信息,成员变量就随对象放在堆中(这也是毕老师讲的)。
而我的问题是:在没有new一个对象的时候,如果已经加载了类的信息(比如直接通过类名调用了静态属性),那类中的成员变量放在哪呢?忽然看到一句话,然后就豁然开朗了:加载类文件时,非静态成员变量(对象的特有属性)不会被加载。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

3 个回复

倒序浏览
1、static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享(因此可以用来统计一个类有多少个实例化对象),所以有些属性希望被所有对象共享,则必须将其声明为static属性,被static声明的属性成为全局属性。2、只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。3、类中定义的静态代码块会优先于构造块先执行,而且不管有多少个对象,静态代码块只执行一次你子类继承父类,不在子类的构造方法中调用父类方法,你可以不用super,你也可以方法重载!但建议还是用super,super就是怕你重写!

评分

参与人数 1技术分 +2 收起 理由
黑马蔡红微 + 2 2分鼓励分

查看全部评分

回复 使用道具 举报 1 0
L_t 发表于 2014-2-26 09:30
1、static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,被s ...

。。。。我也没问静态啊,我问的是非静态成员变量。
不过问别人还是问明白了 谢谢
回复 使用道具 举报
非静态变量随着对象的创建放在堆中,静态变量放在静态区中,其实对于静态变量关键的不是明白放在哪,而是要理解在一个类在创建不同的对象时静态起到了什么作用,进一步研究静态变量什么时候被释放

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马