1、final修饰成员变量
即该成员被修饰为常量,意味着不可修改。
对于值类型表示值不可变;对于引用类型表示地址不可变
其初始化可以在三个地方
①:定义时直接赋值
②:构造函数
③:代码块{}或者静态代码块static{}
import java.util.Arrays;public class Test { public static void main(String[] args) { FinalDemo f=new FinalDemo(); }}class FinalDemo{ //定义时复制 final int[] arr={1,2,3,4,5}; final int a; //在代码块中初始化a { a=1; } final static double PI; //在静态代码块中初始化PI static{ PI=3.141592653; } final int b; public FinalDemo(){ //在构造函数中初始化b b=2; //因为数组是引用类型,这里arr[2]=10并没有改变引用类型地址,只是改变地址所对应的值 arr[2]=10; System.out.println(Arrays.toString(arr)); System.out.println(a); System.out.println(b); System.out.println(PI); }}结果为:[1, 2, 10, 4, 5]123.141592653
2、final修饰局部变量
①:直接赋值
②:先声明在赋值
【注意】:在使用前当且仅当只能赋值1一次
public class Test { public static void main(String[] args) { FinalDemo f=new FinalDemo(); }}class FinalDemo{ public FinalDemo(){ final int a; final int b=2; a=1; System.out.println(a); System.out.println(b); }}
3、final修饰方法
final修饰方法表示该方法不可被重写
4、final修饰类
final修饰类表示该类不可被继承