• Java中的final关键字


    final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。申明为final的常量不能再次赋值,一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。下面来一一介绍:

     1. final变量

    final变量是只读的,再次赋值会报错,final变量就是常量,而且通常常量名要大写。

    它必须在构造器中初始化,或者调用this()初始化,否则编译器会报错“final变量(变量名)需要进行初始化”。

    1 public static final String PATH= "C:\file";
    2 PATH= new String("C:\file") //JVM会报错,invalid compilation error

    有一种情况需要注意,当变量申明是符合数据类型时,变量将自动默认为final变量,如下代码会报错。

    public class Test{
        public Byte b = 10;
        public void test(Byte b){
            b = 19; //JVM会报错,invalid compilation error
            }
    }

    2. final方法

    代表这个方法不可以被子类的方法重写。如果一个方法的功能已经足够完整了,以后不用更改,可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定

     1 class Test1{
     2     public final String getValue(){
     3         return "abc";
     4     }
     5 }
     6  
     7 class Test2 extends Test1{
     8     @Override
     9     public final String getValue(){
    10         return "def"; //compilation error: overridden method is final
    11     }
    12 }

    3. final类

    final类通常功能是完整的,它们不能被继承。Java中有许多类是final的,譬如String, Interger以及其他包装类。

     1   final class Test1{
     2       public final String getValue(){
     3           return "abc";
     4       }
     5   }
     6    
     7   class Test2 extends Test1{//compilation error: cannot inherit from final class
     8       @Override
     9       public final String getValue(){
    10          return "def"; //compilation error: overridden method is final
    11      }
    12  }


    4. 一种特殊的final对象,对于集合对象声明为final指的是引用不能被更改,但是你可以向其中增加,删除或者改变内容

    1 private final List test= new ArrayList();
    2 test.add(“a”);  //valid
    3 test.add("b"); //valid
    4 test= new Vector();  //not valid
  • 相关阅读:
    转换方法
    数组去重
    js常见兼容
    封装cookie
    常用函数封装
    手绘 代码
    Python变量和数据类型,类型转换
    语句块的概念及注释符的使用
    ipython和pip,模块安装方法
    第一个python程序
  • 原文地址:https://www.cnblogs.com/clarke157/p/6575352.html
Copyright © 2020-2023  润新知