static、final、 abstract修饰符位置不分先后,但修饰符与类型名顺序不同时含义有区别,例如static int a;和int static a;
static-静态的
功能
可以修饰属性(成员变量)、方法、代码块、内部类。注意:不能修饰局部变量
特点
static修饰的资源会在类加载时执行或初始化
static成员可以通过类名直接调用,例如,Integer.MAX_VALUE、Math.rendom()等
类加载:JVM内存第一次使用某个类时,会将其*.class文件读入JVM内存,存在于Code区,可以作为模板来创建对象,使用其方法(仅一次)
类加载的时机:
1)new Student(); 会加载Student类,如果只声明引用Student stu;不会加载
2)类名.静态成员: Arrays.sort(ds); 会先加载java.util.Arrays类,(JVM启动时会提前加载java.lang下所有类)
3) Class.forName(“day08.Animal”);手动加载day08.Animal类,目的就是为了加载一个类,类必须写全名
应用
1、修饰属性
不加static为实例变量,每个对象(实例)拥有一份;
加static为类变量,整个类只有一份(对象共享一份);例如,
class Student{