由stattic修饰的变量、常量和方法被称为静态变量、静态常量和静态方法。
处理问题时会需要两个类在同一个内存区域共享一个数据,为了解决这个问题,可以将这个数据设置为静态的。
被声明为static的变量、常量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其它类使用类名和“.”运算符调用静态成员:类名. 静态成员。尽管这种方式调用静态成员比较方便,但是静态成员同样遵循public、protected、default和private修饰符的约束。
static特点:
1>.随着类的加载而加载。会随着类的消失而消失,它的声明周期很长;
2>.优先于对象存在:静态先存在,对象后存在;
3>.被所有的对象所共享
4>.可以直接被类名所调用。
实例变量和类变量的区别:
a.存放位置:
类变量随着类的加载而存在于方法区中;实例变量随着对象的建立而存在于堆内存中
b.生命周期
类变量生命周期最长,随着类的消失而消失;实例变量生命周期随着对象的消失二消失;
在java中静态使用注意事项:
1>.在静态方法中不可以定义this、super关键字,因为静态优先于对象存在;
2>在静态方法中不可以直接调用非静态方法。静态方法只能访问静态成员;非静态方法既可以访问静态,也可以访问飞静态;
静态函数的利弊:
利处:对对象的共享数据进行单独空间的存储,节省空间。没有必要每个对象中都存一份,可以直接被类名调用
弊处:生命周期过长。(静态虽好,只能访问静态)
4.静态代码块
格式:
static
{
静态代码块中的执行语句。
}
特点:随着类的加载而加载,只执行一次,并优于主函数,用于给类进行初始化;
|