用法:static是一个修饰符,用于修饰成员(成员包括成员变量和成员函数)。
当成员被static修饰后,成员不在堆内存中,而是存放在方法区,节约了内存空间,被被对象所共享,被static修饰的成员不仅可以被对象调用,还可以直接被类名调用,如Person.country()//类Person 直接调用static修饰的country方法。
方法区:也叫共享区或数据区,用来存放static修饰的成员、方法。
static的特点:
1,随着类的加载而加载,随着类的消失而消失,生命周期最长。
2,优先于对象存在
3,被所有对象共享
4,直接被类名调用
Static使用注意:
1,静态方法只能访问静态成员,非静态方法可以访问静态成员及非静态成员
2,静态方法中不可以定义this 、super 关键字,因为静态优先于对象存在
3,主函数main 是静态的
使用static的利弊:
对对象共享数据进行单独空间存储,节省空间,可直接被类名调用,但是生命周期过长,访问出现局限性(静态只能访问静态)。
什么时候使用static?
从两方面分析,静态变量和静态函数
静态变量:对象中出现共享数据时用静态修饰,如果是特有数据时定义为非静态
静态函数:当功能内部没有访问到非静态数据时,可定义成静态函数
class Person
{
String name;
p ublic static void show()
{
System.out.println(“a static demo”);//函数内与对象特有属性无关,函数可用static修饰
}
}
public static void main(String[] args)
{
Person.show();//静态函数类名可以直接调用
}
静态的应用:
每个程序中都有共性的功能,可以将功能抽取,独立封装以便复用。