11、final详解

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]
1
2
3.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修饰类表示该类不可被继承

原文地址:https://www.cnblogs.com/caoyc/p/4366340.html