1,final 的作用:(表示,这个内容就是最终的)

  1. 被final修饰的方法,不能被重写。
  2. 被final修饰的变量,就是 常量!(能赋一次值,之后都不可变)
  3. 被final修饰的父类,不能再作为父类被子类继承了。(不能被继承)

    2,final 修饰 数据类型变量:

  4. 变量 是 基本数据类型 :

final修饰的基本数据类型就是 常量 ,因为 数据值不能改变。

  1. 变量 是 引用数据类型:

final修饰的引用数据类型,地址值是不可以改变的,但是地址里面的内容是可以改变的。

  1. //final 修饰引用类型变量。
  2. final int[] arr = new arr(){11,22,33};
  3. //里面的内容可以改变;
  4. arr[0]=100;
  5. //这里报错,因为改变的是引用类型的地址;
  6. arr = new arr2(){22,33,44};

3,final 修饰 局部变量

与 上述 同理。

4,final 修饰 的 特点:

  1. final 修饰 的 类:这个类不能被继承;(表明是最终类)
  2. final 修饰 的 方法:表明这个方法是最终 方法,不能被重写;
  3. final 修饰 的 变量: 就是代表 常量,只能对其进行一次赋值;(详见,上述第2点)(注意:定义的时候一定要及时赋值或者写个构造方法给他赋值,否则会被默认生成的无参构造器赋予默认值,在以后就不能修改了);
  4. 注意:当常量值在构造方法中赋值时,有多个构造器,如常量没有在静态代码块内,那所有构造器中都要给常量赋值一次,保证调用每个构造器都存在该常量值;