Java-Static&final
static关键字
概述
修饰词
- 被修饰的方法/属性可被继承 ;
- 不可被覆盖&重载。
- 覆盖发生在运行期间绑定;
- 静态方法和属性在编译阶段和类进行了绑定。
覆盖关注于实例方法,而实例方法的调用在运行时确定。
静态方法和属性关注于类本身,因此在编译时已经确定了调用。
所以,可以将这两个概念视为两种不同的调用机制,一种在运行时确定,另一种在编译时确定。
导包
- 静态导包可以直接调用包中的方法
**final static **
- 不可修改的全局变量。
场景
- 代码在项目启动时候就执行需要放在静态代码块中,而且这种执行是主动执行的。
- 在不创建对象的情况下执行一个方法,可以采用静态方法。
静态方法静态变量在使用的时候需要注意什么?
final
修饰词
- final修饰类:不可被继承(默认类中方法也是final类型)
- final修饰方法:不可被覆盖,可被重载。
- final修饰成员变量:表示常量,只能赋值一次,而且不可更改。
场景
- 接口中的变量都必须使用final关键字修饰;
- 而且是public static 修饰的 ;因为接口中的变量是当作常量来设计的。
在 Java 中,final
关键字用于声明一个不可变的变量,或者一个只能被赋值一次的变量。有两种情况下 final
类型的对象会被赋值:
- 在声明时赋初值: 在声明
final
变量的同时,可以直接为它赋初值。一旦赋予初值,就不能再对这个变量进行重新赋值。
final int x = 10; // 在声明时赋初值
- 在构造方法中赋值: 对于
final
类型的实例变量,可以在构造方法中进行赋值。一旦在构造方法中对final
实例变量赋值,就不能再次对其进行修改。
public class MyClass {
final int y;
public MyClass(int yValue) {
this.y = yValue; // 在构造方法中赋值
}
}
在这两种情况下,一旦 final
类型的变量被赋值,就不能再修改其值。这有助于确保变量在使用过程中保持不变性,提高代码的可读性和安全性。