final 最终的 不可更改的
1.可以修饰什么?
2.修饰后有什么特点
修饰变量
一旦变量存了一个值 若用final修饰后 则不让再次改变—->相当于常量
如
final int a;//如果在定义变量时没有赋初值 给变量一次存值的机会
//(因为变量在栈内存空间内 没有默认值 如果不给赋值的机会 就没法用)
a = 10;
a=100;//若此时还想再赋值 编译会报错
注意变量类型是基本类型还是引用类型
如果修饰的是基本类型 则变量的值不让更改——>常量
如果修饰的是引用类型 则变量的地址引用不让更改—->对象唯一
如
final int[] x = new int[]{1,2,3};
x[0] = 10;//因为x里的地址引用没有改变 所以可以改变数组存储的内容
x = new int[5];//这个时候地址引用发生改变 编译报错
修饰属性
final修饰的属性相当于全局变量 存储在堆内存的对象空间内一个空间
正常的属性若没有赋值 有默认值存在
若属性用final修饰后 必须给属性赋初值 否则编译报错
final修饰属性 那么属性一旦被分配内存空间 就必须初始化 并且之后不可变
final修饰属性 初始化只有三种方法 直接赋值 或 在构造方法中赋值 或 程序块中
特点与修饰变量一致
注意变量类型是基本类型还是引用类型
如果修饰的是基本类型 则变量的值不让更改——>常量
如果修饰的是引用类型 则变量的地址引用不让更改—->对象唯一
修饰方法
方法是最终的方法 不可更改
即final修饰的方法 要求子类不能重写父类的方法
修饰类本身
类是最终的 不可以更改
即此类不可以被其他子类继承
通常都是一些定义好的工具类
比如 Math Scanner Integer String