以上基于jdk1.8。final变量如果是静态的,要么定义时初始化,要么在静态代码块中初始化。final变量如果不是静态的,要么定义时初始化,要么在非静态代码块中初始化。

 静态变量定义时初始化:

静态变量在静态代码块中初始化 :

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;/*** Title:** @Author* @CreateTime 2019/6/5 11:16*/
public class Person2 {private Date birthDate = new Date();//    private final Date BOOM_EXP = new Date();//正确private final Date BOOM_EXP;//需要在非静态代码块中初始化//    private static final Date BOOM_START = new Date();//正确private static final Date BOOM_START;//需要在静态代码块中初始化private static final Date BOOM_END;static {System.out.println("Person2.static");Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));calendar.set(1946, Calendar.JANUARY, 1, 0, 0, 0);BOOM_START = calendar.getTime();calendar.set(1965, Calendar.JANUARY, 1, 0, 0, 0);BOOM_END = calendar.getTime();}public Person2() {System.out.println("public Person2()");}{System.out.println("BOOM_EXP = new Date();");BOOM_EXP = new Date();}public boolean isBabyBoomer() {return birthDate.compareTo(BOOM_START) >= 0 && birthDate.compareTo(BOOM_END) < 0;}
}
public class Main {public static void main(String[] args) {new Person2().isBabyBoomer();}
}

输出:

Person2.static
BOOM_EXP = new Date();
public Person2()

同时可见执行顺序是:静态代码块->非静态代码块->构造函数

final变量要么定义时初始化,要么在代码块中初始化相关推荐

  1. C语言结构体变量在定义时初始化

    C语言结构体变量在定义时就将其初始化的格式如下 struct struct_name struct_variable = {     .member1            = xxx,     .m ...

  2. java类静态初始化_Java静态代码块和类初始化、实例初始化过程

    1. 静态代码块 静态代码块:定义在类中方法外,使用static修饰 ①可以为类变量(静态变量)初始化 ②静态代码块在第一次使用这个类之前执行,即在类初始化时执行,且只执行一次 ③若有多个静态代码块, ...

  3. 代码块(初始化代码块)

    一.使用方式:不用显示调用. 二.形式: [修饰符]{ .... }:其中,修饰符只能是static,最后的分号可加可不加 三.分类: 静态代码块:前面有static修饰,只有在类加载时隐式调用一次 ...

  4. python实例变量初始化_Python – 应该在__init__中初始化所有成员变量

    也许这更像是一个样式问题,而不是技术问题,但我有一个带有几个成员变量的python类,我想让它工作,以便在用户首次创建类的实例时初始化一些成员变量(即在__init__函数中)我希望从稍后将调用的成员 ...

  5. python dict初始化大小_在Python中初始化/创建/填充Dict的Dict

    我必须在为我的研究编写代码时经常这样做.您将希望使用defaultdict包,因为它允许您添加键:值对在任何级别上,通过简单的分配.回答完你的问题我会给你看的.这是直接来源于我的一个程序.关注最后4行 ...

  6. main c语言中变量的定义,C语言中在main函数中定义的变量是全局变量么_后端开发...

    PHP 和 JavaSript 区别_后端开发 PHP是一种创建动态交互性站点的强有力的服务器端脚本语言,主要用于Web开发领域,而JavaSript是一种具有函数优先的轻量级,解释型或即时编译型的高 ...

  7. align latex 使用_latex中使用listings时如何使matlab代码块居左而非居中,最好与上面的文本对齐...

    ## 编译环境 操作系统 * [x] Windows 7/8/10 * [ ] macOS * [ ] Linux `若需勾选,请把[ ]改成[x]` Tex发行版 * [ ] TexLive `年份 ...

  8. linux新磁盘初始化,如何在Linux操作系统中初始化磁盘

    执行以下命令,进入fdisk模式. 本步骤中以"/dev/xvde"为例. fdisk /dev/xvde 屏幕回显如下: ... Warning: invalid flag 0x ...

  9. Java笔记017-类变量和类方法、理解main方法语法、代码块、单例设计模式、final关键字

    目录 面向对象编程(高级部分) 类变量和类方法 类变量-提出问题 传统方法解决 问题分析: 类变量快速入门 类变量内存布局 什么是类变量 如何定义类变量定义语法: 如何访问类变量 定义语法: 类变量使 ...

最新文章

  1. 【整理】JDK MacOS X
  2. java 中和_java中的和=是什么意思
  3. 游侠联机显示无法链接服务器,我的世界用游侠联机时连接不上
  4. 具有链接资源的Spring RestTemplate
  5. html动态网页效果代码_教你制作网页的第一步
  6. bootstrap 解决弹出窗口(modal) 常见问题
  7. python接口测试第二期_Python接口测试实战2 - 使用Python发送请求
  8. SH760二自由度系统非周期激励解析法求解
  9. 前端 | 每天一个 LeetCode
  10. Xv6 traps and system calls
  11. Mysql 不使用窗口函数实现分组排序 rank 别名问题
  12. C++静态库和动态库的导入导出
  13. perl bless
  14. 金仓数据库KingbaseES数据库开发指南(4. 面向应用程序的PL/SQL开发)
  15. CMake生成多个.so文件
  16. postgresql11.2修改分区表中复合索引字段长度遇到的BUG
  17. 控制数十万网吧电脑挖矿,嫌疑人落网;微软开源 Azure IoT Edge 边缘计算服务
  18. MSI B360 安装黑苹果 bois 设置
  19. AutoVue软件在电子制造行业…
  20. android:拍照或从相册选取图片

热门文章

  1. win10 ubuntu16.04 双系统 时间不一致问题解决办法
  2. 关于雪花算法id冲突的思考解决思路
  3. 用python做元旦贺卡_用AI帮你画新年贺卡:只需输入几个单词,就能模仿大师名作...
  4. 如何利用小红书进行产品营销?小红书营销技巧有哪些?
  5. 微信订阅号申请流程及准备材料
  6. MD5加密——代码实现
  7. [译] 如果界面产品设计师设计实体产品
  8. 【微信】微信,是一个生活方式
  9. 基于微信小程序的租车小程序 毕业设计毕业论文 开题报告和效果图(基于微信小程序毕业设计题目选题课题)
  10. 软件授权解决方案FlexNet Publisher