static关键字
- static 修饰的⽅法或变量,优先于对象执行,所以内存会先有 static修饰的内容,后有对象的内容
- 可以用来修饰类的成员方法、类的成员变量,还可以编写static静态代码块
- 修饰变量就是类变量,修饰方法就是类⽅法
总结: 类变量或者类方法,可以直接通过类名.⽅法名或者变量名进⾏调⽤,不⽤经过对象
public class Student{
static int age;
static String name;
public static void sleep(){
}
}
- static变量也称作静态变量
- 和⾮静态变量的区别是,静态变量被所有的对象所共享,在内存中只有⼀份,它当且仅当在类初次加载时会被初始化。⾮静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响
- static成员变量的初始化顺序按照定义的顺序进⾏初始化
- static⽅法也称作静态⽅法
- 不依赖于任何对象就可以进行访问,类名.⽅法名
- 不能访问类的非静态成员变量和⾮静态成员⽅法
注意事项:
- 静态方法不能直接访问⾮静态变量
- 静态方法当中不能使用this
- 核心:一个类⾥面 static修饰的不能访问非static修饰的成员或者⽅法,⽽非static修饰的可以访问static修饰的成员或者方法
//静态变量量
static int age;
//静态⽅方法
public static int getAge(){
return 5;
}
静态代码块
- 加载类的时候,静态代码块会被执行⼀次,且只能执行⼀次
- 静态内容优先于非静态内容,所以静态代码⽐、比构造⽅法先执⾏
- 使⽤场景:用来⼀次性对静态成员变量进⾏赋值,或者类资源初始化等操作
public class 类名{
static {
//静态代码块
}
}