Java-static
Java-static
一 static
static是一个修饰符,仅仅能修饰成员变量和方法
除了对象调用的方式。还多了一种调用方式
即能够使用 类名.静态成员 来调用,简称为类变量,
2,static在数据区:类的方法和静态方法
3。static特点:
随着类的载入而载入,随着类的消失而消失
生命周期最长
优先于对象存在,静态变量在对象不存在的时候也存在
被全部对象所共享
直接被类名调用
4,使用的原因
尽管能够通过建立类的对象来使用类的方法。对类进行操作,
可是假设出现了:
1,定义了类的对象。却没有使用类的非静态变量
2,类没有封装静态变量
这两种情况的话。就能够考虑将类中的方法都定义为static,使得能够
直接通过类名.静态方法名来调用方法
将方法都静态后,能够方便与使用。可是该类还是能够被其它的程序建立变量
为了更加严谨。强制不能建立对象,能够通过将构造函数私有化来完毕
二 实例变量(非静态变量)和静态变量(类变量)的差别
1,存放位置
类变量随着类的载入而存在于数据区中
非静态变量随着对象的建立而存在于堆内存中
2,生命周期
类变量生命周期最长。随着类的消失而消失
非静态变量生命周期随着对象的消失而消失
三 什么时候使用静态
什么时候定义静态变量:
当对象中出现共享数据时。该数据被静态修饰
对象中的特有数据定义成非静态存在堆内存
什么时候定义静态函数:
当函数内部没有訪问到非静态成员的时候。能够定义为静态函数
非静态变量定义在对象中,当不须要使用非静态变量的时候,
就不须要对象去调用。所以能够定义为静态函数,用类名直接调用
注意事项
1,静态方法仅仅能訪问静态成员
非静态方法能够訪问静态和非静态
2,静态方法不能够定义this,superkeyword
由于静态优先于对象存在。所以静态方法不能够有this
3,主函数静态
长处:
对对象的共享数据进行单独空间存储,节省空间,没有必要每一个对象都春一份
能够被类名调用
缺点:
生命周期过长
訪问出现局限性,(静态仅仅能訪问静态)