面试题:Java类初始化顺序
1. 问题来源
你遇到过哪些质量很高的 Java 面试? - ZO01的回答 - 知乎 https://www.zhihu.com/question/60949531/answer/579002882
2. Java 类初始化顺序
父类静态
变量、父类静态
代码块、子类静态
变量、子类静态
代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数。
2.1 初始化优先级
- 父类 > 子类
- 静态 > 非静态
- 变量 > 代码块 > 构造函数
3. 代码示例
class Base {private static int VarStatic = 0; // 1static {System.out.println("Base static initialization block"); // 2}private int Var = 0; // 5{System.out.println("Base initialization block"); // 6}public Base() {System.out.println("Base constructor"); // 7}
}public class Derived extends Base {private static int VarStatic = 0; // 3static {System.out.println("Derived static initialization block"); // 4}private int Var = 0; // 8{System.out.println("Derived initialization block"); // 9}public Derived() {System.out.println("Derived constructor"); // 10}public static void main(String[] args) {Derived obj = new Derived(); // 单步调试时,4之后,会回到这行,再进入5}
}
/*
Base static initialization block
Derived static initialization block
Base initialization block
Base constructor
Derived initialization block
Derived constructor*/
4. 参考
- 红枫忆梦:【面试题】Java程序初始化的顺序是怎样的
- Core Java 11th Volume Ⅰ: 4.6.7 Initialization Blocks
面试题:Java类初始化顺序相关推荐
- 【知识总结】Java类初始化顺序说明
微信公众号:努力编程的小猪 如有问题或建议,请公众号留言 Java类初始化顺序说明 一个类中包含如下几类东西,他们前后是有顺序关系的 静态属性:static 开头定义的属性 静态方法块: static ...
- (转)java类初始化顺序 - jackyrong的世界 - 博客园
(转)java类初始化顺序 我们大家都知道,对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过 ...
- java类初始化顺序_Java 类的初始化顺序
静态代码块:用staitc声明,jvm加载类时执行,仅执行一次 构造代码块:类中直接用{}定义,每一次创建对象时执行 执行顺序优先级:静态块,main(),构造块,构造方法 1. 构造函数 publi ...
- Java提高篇——静态代码块、构造代码块、构造函数以及Java类初始化顺序
构造函数 public HelloA(){//构造函数} 关于构造函数,以下几点要注意: 1.对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的. 2.构造函数的作用是 ...
- Java类初始化顺序(变量赋值与静态代码块的执行时间)
前言:最近写代码的时候经常见到见到static代码块,不由对static的执行时间产生了兴趣,进而对类初始化顺序产生了兴趣. 类从编译到执行的过程: 在使用ClassLoader将字节码转换为JVM中 ...
- 一文详解Java类初始化顺序
目录 一.普通类 二.包含继承关系 三.包含接口.抽象类关系 本文将介绍三种情形下的类初始化顺序. 一.普通类 Java类:Animal.java package ztt.继承接口多态.执行顺序测试; ...
- java类初始化顺序-阿里笔试题
阿里笔试题之写出程序输出结果: package com.patrick.bishi;public class TestVar {public static int k = 0;public stati ...
- java类初始化顺序_《To Be a Better Javaer》-- Java 基础篇 vol.2:面向对象
Java是面向对象的高级编程语言,面向对象的特征如下: 面向对象具有抽象.封装.继承.多态等特性: 面向对象可以将复杂的业务逻辑简单化,增强代码复用性: 面向对象是一种常见的思想,比较符合人们的思考习 ...
- JAVA类初始化顺序总结
类的初始化 初始化顺序 首先来看下,当一个类从main入口方法,对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序: public class ClassLoadTest {priv ...
最新文章
- Android基于mAppWidget实现手绘地图(四)--如何附加javadoc
- Symfony2学习笔记之HTTP Cache
- Centos7下删除virbr0网卡信息
- php 回调通知 连连支付_php怎么写连连支付退款
- win7如何为计算机添加用户名和密码,win7系统电脑,如何的设置共享,共享计算机的地用户名和密码怎样设置...
- postman断言之常用函数
- Exynos4412 内核移植(二)—— 内核编译过程分析
- 今天的这天晚上的飞鸽传书
- 机器学习--LR逻辑回归与损失函数理解
- 机器视觉:光源专业词汇中英文详解
- CmsEasy可视化编辑商城系统源码
- 安装服务器系统驱动加载不成功,安装windows server系统提示“无法在此驱动器上安装windows”的解决办法...
- 怎么在qq空间引流?QQ空间生日栏怎么引流?
- html 如何关闭自动填充,如何禁止浏览器自动填充
- String源码 spilt
- HDU6669 Game
- python建筑案例_有哪些关于 Python 在建筑中的应用和教程?
- 高德地图生成静态图片,显示指定经纬度的地图
- android 布局 缩小图片大小,三大布局的基本摆放属性总结,以及imageVIew图片摆放的缩放问题...
- AcWing1293. 夏洛克和他的女朋友
热门文章
- 「镁客·请讲」芝麻科技朱智:用线下大数据提高商家运营效率
- 树莓派玩转机器人学习路线网盘资料
- 推荐一位文字真特么有趣的程序员
- FPGA作业3:通过时钟产生双向移位寄存器
- signature=2f5f7776a12b849050f88bd5b555c78c,Topological defects in nanoporous carbon
- docker镜像、容器 常用命令,容器端口映射
- 用于电路保护的模拟隔离技术
- python中文对齐_Python 终端下中文字符对齐处理和编码续
- maven-assembly-plugin的使用
- Android 的自定义RadioGroup