static关键字

来源:互联网 发布:linux 设置ip地址 编辑:程序博客网 时间:2024/06/05 18:25

static:静态的意思,是一个用于修饰成员函数和成员变量的关键字。被它修饰的成员比其他成员多了一个调用方式,即可以直接被类名.静态成员调用

被静态修饰的成员可以叫静态成员,也可以叫类成员

它的特点:

1:随着类的加载而加载,同样,也会随着类的消失而消失,这也表明,它的生命周期最长。

2:它修饰的成员优先于对象存在,所以静态方法中不可以出现this,super关键字;这也对应了它可以直接被类名.静态成员调用。所以,在定义静态的函数时,里面一定不能有非静态的成员,因为静态成员出现时,还没有对象,那么非静态的成员就还没有实例化,即还没有在内存中存在。否则会出现异常。

3:被静态修饰的成员被所有对象共享。因为之所以把一个成员定义为静态,就是因为它里面的数据是所有对象的共性内容,所以把它们抽取出来,不用再在每个对象里面都存放一份,可以节约内存空间

4:可以直接被类名调用。

和实例变量的区别:

1:从存放位置来看:类变量随着类的加载而存在于方法区中,实例变量随着对象的建立存在于堆内存中

2:从生命周期来看:静态变量的生命周期最长,只要类不消失,就一直存在于方法区中,而实例变量在对象消失的时候就消失了。

静态的使用时机:

1:静态成员的使用:当数据为所有成员共享时,把这个数据定义为静态。

2:静态函数的使用:当功能内部没有访问到非静态的数据时,把函数用静态修饰。

静态的利弊:

利:把所有对象共享的数据进行单独存储,节省了内存空间,且可以直接被类名调用,不需要建立对象

弊:生命周期过长,且访问具有局限性(只能访问静态的成员变量)。


另:

静态代码块
格式:
static
{
静态代码块中的执行语句//跟静态的方法一样,里面不能访问任何非静态的成员变量
}
特点:随着类的加载而执行一次,只执行一次,且优先于主函数执行


0 0
原创粉丝点击