在Java中,"final"是一个关键字,常用于修饰变量、方法和类。
【1】修饰类:该类不能被继承。
【2】修饰方法:该方法不能被子类重写或覆盖。
【3】修饰变量:该变量表一旦被赋值就不能改变。
- 修饰成员变量
- 修饰局部变量
- 修饰基本数据类型和引用数据类型
- 对于基本类型来说,不可变值得是数据不可改变。
- 对于引用类型来说,不可变指的是地址值不可改变,其值仍然可以改变。
因此,"final"的作用是保证不可变性和不可修改性,从而提高代码的可读性和安全性。
- 修饰类
- 修饰方法
- 修饰类变量
- 修饰成员变量
- 修饰局部变量
- 给被final修饰的成员变量赋值(三种方式)
public class Keyword_Final_Son {
// 方式一:初始化时赋值
private final double num = 1;
// 方式二:构造器方式
public Keyword_Final_Son(double num) {
this.num = num;
}
// 方式三:非静态代码块
{
num = 2;
}
private void method(){
System.out.println(num);
}
public static void main(String[] args) {
Keyword_Final_Son son = new Keyword_Final_Son();
son.method();
}
}
- 给被final修饰的类变量赋值(两种方式)
public class Keyword_Final_Son {
// 方式一:初始化时赋值
private static final double num = 1;
// 方式二:静态代码块
static {
num = 2;
}
private void method(){
System.out.println(num);
}
public static void main(String[] args) {
Keyword_Final_Son son = new Keyword_Final_Son();
son.method();
}
}
- 给被final修饰的局部变量赋值
public class Keyword_Final_Son {
private void method(){
// 方式一:初始化时赋值
final double num = 1;
//方式二:只声明,后续再赋值,仅能赋值一次
final int num2;
num2 = 2;
System.out.println(num);
System.out.println(num2);
}
public static void main(String[] args) {
Keyword_Final_Son son = new Keyword_Final_Son();
son.method();
}
}
- final 修饰基本数据
- final 修饰引用基本类型