zoukankan      html  css  js  c++  java
  • final关键字的使用

    一:final修饰的变量

      1.被final修饰的变量必须显示指定初始值。指定初始值的方法有三种。

        1.定义该变量时直接指定。

        2.在非静态代码块中指定该变量的初始值

        3.在构造器中指定该变量的初始值

      2.被final修饰的类变量同样时必须显示指定初始值。指定的方法有两种。

        1.定义该变量时直接指定。

        2.在静态代码块中指定该变量的初始值

    注意:本质上final修饰的实例变量初始化是在构造器中进行的,以上三种方法的本质是一样的。而final修饰的类变量初始化本质上是在静态代码块中进行的。

     1        class Price {
     2         final static Price instance = new Price(2.8);
     3         final static double initPrice = 20;
     4         double currentPrice;
     5         public Price(double discount){
     6             currentPrice = initPrice - discount;
     7         }
     8     }
     9     public class PriceTest{
    10         public static void main(String[] args) {
    11             System.out.print(Price.instance.currentPrice);
    12             Price p = new Price(2.8);
    13             System.out.print(p.currentPrice);
    14         }
    15     }
    16 此时输出的是17.2,17.2
    View Code
        class Price {
            final static Price instance = new Price(2.8);
            static double initPrice = 20;
            double currentPrice;
            public Price(double discount){
                currentPrice = initPrice - discount;
            }
        }
        public class PriceTest{
            public static void main(String[] args) {
                System.out.print(Price.instance.currentPrice);
                Price p = new Price(2.8);
                System.out.print(p.currentPrice);
            }
        }
    
    此时输出的是-2.8,17.2
    View Code

    如果定义Final类型的变量(不管是类变量,实例变量,还是局部变量)时指定了初始值,而且该初始值可以在编译的时候就被确定下来(基本数据类型的变量),则系统不会在初始化块中对该类变量赋初始值,而是在类定义中直接使用该值。此时这个变量本质上是一个“宏变量”。除了直接赋值的情况外,如果被赋的表达式只是基本的算术运算表达式或字符串连接运算,没有访问普通变量,调用方法,java编译器同样会将这种final变量当成“宏变量处理”。

  • 相关阅读:
    【BZOJ5306】染色(HAOI2018)-容斥原理+NTT
    【BZOJ3129】方程(SDOI2013)-容斥原理+扩展Lucas定理
    【BZOJ3876】支线剧情(AHOI&JSOI2014)-有上下界费用流
    【POJ1149】PIGS-最大流+优化建模
    【BZOJ1941】Hide and Seek(SDOI2010)-KD树
    【BZOJ1834】网络扩容(ZJOI2010)-最大流+费用流+拆边
    【BZOJ1927】星际竞速(SCOI2010)-费用流+拆点
    【BZOJ4872】分手是祝愿(六省联考2017)-期望DP
    【BZOJ2879】美食节(NOI2012)-费用流+拆点+动态加边
    JQ简单图片轮播
  • 原文地址:https://www.cnblogs.com/zhlblogs/p/9084473.html
Copyright © 2011-2022 走看看