美文网首页
Java的fianl关键字

Java的fianl关键字

作者: 春苟哈皮 | 来源:发表于2019-03-19 21:33 被阅读0次

    final用法

    作用在类上

    final作用于类上时表示这个类不允许被继承,其类内部的方法会被隐性的指定为final方法。

    在设计时,除非出于安全考虑,或者这个类永远不会被改变,否则不要设置某个类为final

    修饰方法

    final作用于方法上时,这个方法无法被重写。

    使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。 --《Java编程思想》

    修饰变量

    作用在变量上是final最常的使用方法。

    • 对于一个final的基本数据类型变量,一定被定义之后,这个变量将再也无法被改变
    • 对于一个final的对象类型,一旦被定义之后,这个对象的引用无法改变

    final特性

    final变量和普通变量的区别

    • final修饰的是基本类型和String时,如果在编译期能够知道这个值,那么就会被优化为编译期常量。
    final String a = "hello";
    String b = "helloWorld";
    boolean equals = a + "world" = b; // true
    

    在上面这个例子中,fianl修饰的a在使用时被直接替换成了a的值,有点类似于宏定义这个概念。不过这样的优化只有编译器明确知道这个对象的值才会这样进行优化。

    final修饰的对象引用不变,但是属性可变

    final User user = new User();
    user = new User(); // ERROR
    user.setName("jack");// ACCESS
    

    final和static

    final保证一个变量不会被改变,而static保证了系统中只会保存一份副本。

    匿名内部类使用的外部局部变量只能是final

    相关文章

      网友评论

          本文标题:Java的fianl关键字

          本文链接:https://www.haomeiwen.com/subject/nmdomqtx.html