作用:用于修饰成员(成员变量和成员函数)
被修饰后的成员特点:
- 随着类的加载而加载;
- 优先于对象存在;
- 被所有对象共享;
- 可直接被类名调用。
注意:
- 静态方法只能访问静态成员(变量和函数);
- 静态方法不可以与thi,super关键字一起使用;
- 主函数是静态的。
例如:
class Person{
String name; //实例变量(成员变量)存在堆中
static String country = "CN";//静态变量(类变量)共享数据,节约内存
public void show(){
System.out.println(country+":"+name);//前者省略类名,后者省略this
}
}
class StaticDemo{
public static void main(String[] args){
Person P = new Person();//P是类类型变量
P.name = "Jane";
P.show();
System,out,println(Person.country);
System.out.println(P.country);
}
}
什么时候用静态?(没有访问特有数据)
- 静态变量
当分析对象中索具备的成员变量的值是相同的,不需要存储在对象中。 - 静态函数
函数是否用于静态修饰,就参考一点,就是该函数是否要访问到对象中的特有数据,没有则静态。
从源代码角度分析,该功能是否需要访问到对象的成员变量,如果需要,该功能是非静态的,如果不需要,该功能是静态的,当然,也可以定义非静态的,但是非静态的需要被对象调用,而仅仅创建对象调用非静态的没有访问特有数据的方法,该对象的创建是无意义的。
网友评论