static关键字

  • static 修饰的⽅法或变量,优先于对象执行,所以内存会先有 static修饰的内容,后有对象的内容
  • 可以用来修饰类的成员方法、类的成员变量,还可以编写static静态代码块
  • 修饰变量就是类变量,修饰方法就是类⽅法

总结: 类变量或者类方法,可以直接通过类名.⽅法名或者变量名进⾏调⽤,不⽤经过对象

  1. public class Student{
  2. static int age;
  3. static String name;
  4. public static void sleep(){
  5. }
  6. }
  • static变量也称作静态变量
    • 和⾮静态变量的区别是,静态变量被所有的对象所共享,在内存中只有⼀份,它当且仅当在类初次加载时会被初始化。⾮静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响
    • static成员变量的初始化顺序按照定义的顺序进⾏初始化
  • static⽅法也称作静态⽅法
    • 不依赖于任何对象就可以进行访问,类名.⽅法名
    • 不能访问类的非静态成员变量和⾮静态成员⽅法
  • 注意事项:

    • 静态方法不能直接访问⾮静态变量
    • 静态方法当中不能使用this
    • 核心:一个类⾥面 static修饰的不能访问非static修饰的成员或者⽅法,⽽非static修饰的可以访问static修饰的成员或者方法
      1. //静态变量量
      2. static int age;
      3. //静态⽅方法
      4. public static int getAge(){
      5. return 5;
      6. }
  • 静态代码块

    • 加载类的时候,静态代码块会被执行⼀次,且只能执行⼀次
    • 静态内容优先于非静态内容,所以静态代码⽐、比构造⽅法先执⾏
    • 使⽤场景:用来⼀次性对静态成员变量进⾏赋值,或者类资源初始化等操作
      1. public class 类名{
      2. static {
      3. //静态代码块
      4. }
      5. }