• Java中final变量的初始化方式


    原文转自:http://blog.csdn.net/zhangjk1993/article/details/24196847

     1 public class FinalTest1 {
     2     //-----------------成员变量------------------//
     3     //初始化方式一,在定义变量时直接赋值
     4     private final int i = 3;
     5 
     6     //初始化方式二,声明完变量后在构造方法中为其赋值
     7     //如果采用用这种方式,那么每个构造方法中都要有j赋值的语句
     8     private final int j;
     9 
    10     public FinalTest1() {
    11         j = 3;
    12     }
    13 
    14     //如果取消该构造方法的注释,程序就会报错,因此它没有为j赋值
    15     /*public FinalTest1(String str) {
    16 
    17     }*/
    18 
    19     //为了方便我们可以这样写
    20     public FinalTest1(String str) {
    21         this();
    22     }
    23 
    24     //下面的代码同样会报错,因为对j重复赋值
    25     /*public FinalTest1(String str1, String str2) {
    26         this();
    27         j = 3;//The final field j may already have been assigned
    28     }*/
    29 
    30 
    31     //初始化方式三,声明完变量后在构造代码块中为其赋值
    32     //如果采用此方式,就不能在构造方法中再次为其赋值
    33     //构造代码块中的代码会在构造函数之前执行,如果在构造函数中再次赋值,
    34     //就会造成final变量的重复赋值
    35     private final int k;
    36 
    37     {
    38         k = 4;
    39     }
    40 
    41     //-----------------类变量(静态变量)------------------//
    42     //初始化方式一,在定义类变量时直接赋值
    43     public final static int p = 3;
    44 
    45     //初始化方式二,在静态代码块中赋值
    46     //成员变量可以在构造函数中赋值,但是类变量却不可以。
    47     //因此成员变量属于对象独有,每个对象创建时只会调用一次构造函数,
    48     //因此可以保证该成员变量只被初始化一次;
    49     //而类变量是该类的所有对象共有,每个对象创建时都会对该变量赋值
    50     //这样就会造成变量的重复赋值。
    51     public final static int q;
    52 
    53     static {
    54         q = 3;
    55     }
    56 }
  • 相关阅读:
    Mongo Windows 基本使用入门
    ASP.NET Web API 使用Swagger使用笔记
    Smtp协议与Pop3协议的简单实现
    详解boost库中的Message Queue .
    Bencode编码解析的C++实现
    pugixml使用教程
    在QT中使用Irrlicht引擎的方法与步骤
    七大查找算法
    java保留小数点两位的4种方法
    [Node] nvm 安装 node 和 npm
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/5413484.html
Copyright © 2020-2023  润新知