• java关键字之final


       

     在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。final修饰变量较为常用。

    当用final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值。

    【修饰变量】:
         final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
    【修饰方法】:
         final方法不能被子类方法覆盖,但可以被继承。
    【修饰类】:
         final类不能被继承,没有子类,final类中所有方法都是final的。(如String类)


    那么final变量和普通变量到底有何区别呢?下面请看一个例子:

    public class Test {
        public static void main(String[] args)  {
            String a = "hello2"; 
            final String b = "hello";
            String d = "hello";
            String c = b + 2; 
            String e = d + 2;
            System.out.println((a == c));
            System.out.println((a == e));
        }
    }

    运行结果:

    ture
    false

    当final修饰基本数据类型或String时,如果在编译期间能够知道变量的确切值,那么编译器会把它当作编译期常量(即相当于在任何使用final变量的地方直接使用常量),不用等到运行时确定。所以变量c在便宜期间相当于"hello2"。而变量d要等到运行时通过链接确定值。不过要注意,只有在编译期间能确切知道final变量值的情况下,编译器才会进行这样的优化。

    参考:http://www.cnblogs.com/hwaggLee/p/4491474.htm

  • 相关阅读:
    HBase(2) Java 操作 HBase 教程
    HBase(1) 基本入门篇
    MongoDB 谨防索引seek的效率问题
    MongoDB一次节点宕机引发的思考(源码剖析)
    MongoDB-系统时钟跳变引发的风波
    是什么造成了数据库的卡顿
    了解 MongoDB 看这一篇就够了
    Reactive(3)5分钟理解 SpringBoot 响应式的核心-Reactor
    Reactive(2) 响应式流与制奶厂业务
    suanec-rotatelogs
  • 原文地址:https://www.cnblogs.com/liweizai/p/6536191.html
Copyright © 2020-2023  润新知