(重点)
1.static可以修饰什么
可以修饰成员变量,修饰成员方法,修饰内部类
不可以修饰局部变量,原因:静态成员属于类的,不属于方法
2.static关键字的特点
1.静态成员被所在类的对象共享
2.静态成员可以通过类名进行调用
3.静态成员随着类的加载而加载
4.静态成员优先于对象存在
public class StaticDemo1 {
public static void main(String[] args) {
//静态成员可以通过类名进行调用
Student.nationality="中国";
Student stu1 = new Student("张三", 23);
Student stu2 = new Student("李四", 24);
//静态成员被所在类的对象共享
System.out.println(stu1.getNationality());//中国
System.out.println(stu2.getNationality());//中国
}
}
3.静态方法访问特点
静态方法只能调用静态成员(静态成员变量,静态成员方法)
非静态方法可以调用任意成员(静态和非静态都可以)
原因:
静态方法属于类的方法,是随着类的加载而加载的,所以静态方法可以直接通过类名来调用,静态方法也可以访问其他静态方法
非静态方法属于对象方法,因为类优先于对象存在,静态方法是随着类的加载而加载的所以当静态方法加载到内存时,非静态的方法还没有在内存中存在,先进内存的调用不了后进内存的,所以静态方法调用不了非静态方法,非静态方法需要通过创建对象,用对象进行调用