本帖最后由 余清兰 于 2012-6-25 17:03 编辑
static可以修饰成员变量和成员函数、当有共享数据时就用static修饰,每个对象都能直接用,因为static随着类加载后直接存在了方法区,而实例类要在每个对象中存一份,这样比较占资源,用了static修饰后,就可以节约内存资源。
被static修饰的成员特点:被修饰的成员是随着类的加载而加载,反之随着类的消失而消失,说明它的生命周期最长
优先于对象存在。被所有对象所共享,特有内容被对象存储,共性内容用static修饰,这样节约内存资源。放在了方法区或共享区或叫数据区(类中的方法和共享数据都在此区)
class Person
{
private String name;//成员变量(实例变量)
static private String country="cn";//静态的成员变量(类变量)
Person(String name)
{
this.name=name;
System.out.println(name+":"+country);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person("lisi");
Person p1 = new Person("zhangsan");
}
}
分析:程序运行时,加载类,类在内存中存储,同时static修饰的country已经在内存的方法区,而没有被static修饰的成员变量name此时还不在内存中,只有被对象调用后,才会存在内存中。所以静态的成员变量生命周期最长。
实例类被对象调用后,对象运行完后,随着对象的消失而消失
还有一种特殊的是静态代码块
格式: Static { 静态代码块中的执行语句 } 特点:随着类的加载而执行,且只执行一次。 用于给类进行初始化的。并优先于主函数,只有用到类中的内容时,类才会被加载。
|