- static:表示静态或者全局,可以修饰属性、方法、代码块,静态属性和静态方法是属于类的(也可以说是属于类的所有对象的),可以用类名.静态属性/静态方法来访问,用static修饰的代码块是静态代码块,当虚拟机(JVM)加载该类时,就会执行静态代码块。
- 修饰属性:当static修饰属性时,该属性称为静态变量或者类变量,该变量是在JVM加载类时初始化的;不被static修饰的属性是实例变量,在创建对象时被初始化,实例变量是各个对象独有的。使用一个类的静态变量并不会触发该类的加载。
- 修饰方法:被static修饰的方法称为类方法或者静态方法,一般通过类名调用。静态方法中不能使用this、super关键字,也不能访问实例变量和实例方法,只能访问静态变量和静态方法。父子类中,静态方法只能被静态方法覆盖,非静态方法只能被非静态方法覆盖。
- 修饰代码块:被static修饰的代码块被称为静态代码块,和代码块和属性以及方法是同一个等级的成员,可以有多个,位置可以随便放。JVM加载类时会执行这些静态代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
- final:表示常量、最终,final可以修饰变量、方法、类。final修饰的局部变量为常量,一旦赋值不能修改。final修饰的成员变量必须在声明时赋值,或者在构造函数中,或者在代码块中赋初值,一旦赋值不能更改。final方法不能被子类重写。final类不能被继承,没有子类,final类中的方法默认是final的。final不能修饰构造方法。java中的String、Math等类就是final的。
- 修饰变量:final修饰的局部变量为常量,一旦赋值不能修改。final修饰的成员变量必须在声明时赋值,或者在构造函数中,或者在代码块中赋初值,一旦赋值不能更改。如果final修饰的是对象引用,则引用不可变,引用的对象可以改变。
- 修饰方法:final修饰的方法不能被子类重写。
- 修饰类:final修饰的类不能被继承。
- -
static和final的区别与用途
最新推荐文章于 2025-03-20 19:30:00 发布