在网上查了好多资料,有些资料很是详细,有些只是记录给个人看的,没有一个系统的详细的介绍,因此就自己整了一篇整合版博客,大部分都是来源于网上,如有雷同,望见谅。
final的意思是最终的、不可修改的、见不得变化的,用来修饰变量、方法、类。
修饰变量可以分为修饰基本类型变量、引用类型变量。
修饰基本类型变量,数值一旦在初始化之后便不能更改;修饰引用类型时,对其初始化之后便不能让其指向另一个对象。如下图代码,首先idea会自动检测,导致赋值的变量会爆红,另外运行的时候会有相应的“无法为最终变量**分配值”提示。
final int i = 0; final String str = "String"; @Test public void test1_FinalTest(){ i = 5; System.out.println(i); } @Test public void test2_FinalTest(){ str = "*******"; System.out.println(str); }修饰方法可以分为修饰方法参数,以及修饰方法。
修饰方法参数表示在整个方法中,参数的值不可以变化;修饰方法表示该方法不能被重写(覆盖)。如下面代码所示,赋值s 会导致编译器爆红,另外运行之后会报错“不能分配最终参数s”。
@Test public void test3_FinalTest(){ test3(2); } private void test3(final int s) { s = 4; System.out.println(s); }
final修饰的类不能被继承,且类中所有成员方法都会被隐式的指定为final方法。
实际开发中,应用最多的也就是修饰数据,定义常量用的最普遍。