• 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

  • 相关阅读:
    find module providing package github.com/go-sql-driver/mysql: working directory is not part of a module
    深度学习中的epoch、batchsize、iterations的理解
    淘宝软件质量属性分析
    Git
    多线程
    Spark基础之Scala
    机器学习十讲第十讲
    机器学习十讲第九讲
    机器学习十讲第六讲
    本地MarkDown优雅发表
  • 原文地址:https://www.cnblogs.com/liweizai/p/6536191.html
Copyright © 2020-2023  润新知