标签:虚拟机 分配 text upper 访问 存储空间 类加载 子类 方法调用
静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,
内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,
就会占用大量的内存空间,最后是系统变慢。而普通的成员方法是由对象调用的,
内存并不会一直为起分配内存,只有调用的时候才为其分配存储空间,而当其没有被调用时,
存储空间就会被内存管理其收回,释放没有用的空间,提高的系统的运行速率!
好处:就像你说的不用实例化直接通过类名调用。
弊端:静态方法当加载的时候就已经申请了内存空间,不用的话造成了不必要的浪费。、
使用类的静态方法时,注意:
a、在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员(这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象
静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何实例对象,当静态方法调用时,this所引用的对象根本没有产生。
java中类加载顺序
1、虚拟机在首次加载Java类时,会对静态初始化块、静态成员变量、静态方法进行一次初始化
2、只有在调用new方法时才会创建类的实例
3、类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法;再执行本类继承的子类的初始化块,最后是子类的构造方法
4、类实例销毁时候,首先销毁子类部分,再销毁父类部分
注意:子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。
标签:虚拟机 分配 text upper 访问 存储空间 类加载 子类 方法调用
原文地址:http://www.cnblogs.com/llforeverlove/p/6345140.html