Static关键字的作用
-
关键字 Static 可以用来修饰类中的属性和方法,但是一定不能修饰构造器
-
Static 关键字所修饰的属性和方法被称为静态变量(类变量)和静态方法
-
静态变量和静态方法是随着类的加载而加载,优先于对象的创建
静态变量Vs实例变量
静态变量:
-
静态变量存储在方法区中,随着类的加载而加载,且多个对象共享一个静态变量
-
由于类只会加载一次,所以静态方法也只会加载一次,存在方法区的静态域中
-
静态属性的调用,静态属性可以通过 类.属性 和 对象.属性进行调用
实例变量:
-
实例变量存放在堆中的对象内,实例变量是随着对象的创建而存在的,且每个对象使用单独的实例变量
-
实例变量会随着对象的回收而消失,且实例变量只能通过 对象.属性 进行调用,不能直接通过 类.属性 进行调用
静态方法
- 静态方法随着类的加载而加载,且静态方法只能调用静态方法和静态属性(非静态方法和实例变量的生命周期小于静态方法,编译时会报错)
- 静态方法中不能使用 this(), super() 因为构造器是不能被Static关键字所修饰的
Static关键字的使用场景
- 在开发中,我们常常会使用一些属性希望它是被所有对象所共有的,例如我们所有人中国人都共享一个属性”中国“,这个属性随着类的创建就存在,如果希望这个静态属性不被修改我们可以使用 fianl 关键字进行修饰。
- 许多工具类我们会使用 Static 关键字修饰,Math,PI,UNitill…
class People{
final static String nation="中国";
int age;
String name;
People(int age,String name){
this.age=age;
this.name=name;
}
People people=new People("陈","20");
System.out.println("姓名"+people.name+"年龄"+people.age+"国籍"+People.nation);
}