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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Cheers_for_CRAZ 中级黑马   /  2013-12-28 00:26  /  1241 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Cheers_for_CRAZ 于 2013-12-30 22:19 编辑

1,类的生存周期是什么,合适加载进内存,何时在内存中消失?2,如果一个类被加载进内存,是不是类的所有内容都被加载进内存?
      如果是这样,那么我如果只是用到另一个类的一个静态变量,这时候类都被加载进内存,岂不是很消耗内存?
  
      

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

4 个回复

倒序浏览
当你的类加载进内存开始到你不在用到这个类时结束.当你用这个类的时候,比如创建一个类的对象,或者用到调用这个类的方法时候,在或者用到这个类的子类对象.,类才加载进内存,如果一个类加载进内存只加载非静态的变量和方法,静态的变量和方法都不进内存进方法区,当你调用一个类的静态变量的时候这时候的类并没有进入到内存只是在方法区中调用这些静态成员.写个代码
package tess;

public class tess2 {
        public static void main(String[] args){
                System.out.println(A.a);
        }
}
class A{
        static int a = 4;
        A(){System.out.println("aaaaaa");};
        {System.out.println(1111);}
}  上面这个代码如果A要是加载进内存的话输出语句肯定会执行到,可是结果显示并没有打印输出语句.

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
范龙波 发表于 2013-12-28 01:08
当你的类加载进内存开始到你不在用到这个类时结束.当你用这个类的时候,比如创建一个类的对象,或者用到调用 ...

还有疑惑:1,如果当调用静态变量的时候类没有进内存,那么这时候我再创建对象,类难道要重新加载一次?
2,内存从硬盘上读取文件的时候,难道是仅仅读取了静态成员?没有读取方法?文件(类)中的内容那么多,我怎么知道哪一个是static的?
回复 使用道具 举报
1.当你创建类的对象的时候,类才加载进内存,调用他的构造方法.是第一次加载进内存不是重新加载一次.
2,当你调用静态成员的时候,是在方法去调用的,不是在内存中调用的,把类中的那些静态成员都加载进了方法区,你调用类中的静态成员的时候 不是用 类名.成员 吗? 都指定类名了应该很好知道是哪一个了

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
范龙波 发表于 2013-12-28 09:28
1.当你创建类的对象的时候,类才加载进内存,调用他的构造方法.是第一次加载进内存不是重新加载一次.
2,当你 ...

1补充一下当你调用静态变量的时候 把静态变量加载进了方法区,你调用的时候是在方法去调用的,当你创建对象的时候才在内存中加载
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马