Java类的初始化顺序

  在开发中,知道Java类的初始化顺序才能让我们更加清楚地掌握程序的执行流程。先把结论贴出来,Java里,从图里的1~6,分别按顺序执行。

  以下为代码验证阶段,一共三个类:基类(Base)、子类(Sub)和工具类(Log,输出日志)。

package com.kobe.practice.order;

public class Sub extends Base {

    public static void main(String[] args) {
Sub sub = new Sub();
} static {
System.out.println("Sub static block 1");
} private static String staticValue = Log.printLog("Sub static Fields"); static {
System.out.println("Sub static block 2");
} {
System.out.println("Sub normal block 1");
} private String value = Log.printLog("Sub normal Fields"); {
System.out.println("Sub normal block 2");
} public Sub() {
System.out.println("Sub constructor");
} } class Base {
static {
System.out.println("Base static block 1");
} private static String staticValue = Log.printLog("Base static Fields"); static {
System.out.println("Base static block 2");
} {
System.out.println("Base normal block 1");
} private String value = Log.printLog("Base normal Fields"); {
System.out.println("Base normal block 2");
} public Base() {
System.out.println("Base constructor");
} } class Log {
public static String printLog(String msg) {
System.out.println(msg);
return null;
}
}

  输出结果:

Base static block 1
Base static Fields
Base static block 2
Sub static block 1
Sub static Fields
Sub static block 2
Base normal block 1
Base normal Fields
Base normal block 2
Base constructor
Sub normal block 1
Sub normal Fields
Sub normal block 2
Sub constructor

  从结果能看出,基类的静态代码块、基类的静态成员变量(优先级相同,根据在代码中的出现顺序执行,且只有在类的一次加载时执行) → 派生类静态代码块,派生类静态成员字段优先级相同,根据在代码中的出现顺序执行,且只有在类的一次加载时执行) → 基类普通代码块,基类普通成员字段(优先级相同,根据在代码中的出现顺序执行) → 基类的构造函数 → 派生类普通代码块,派生类普通成员字段(优先级相同,根据在代码中的出现顺序执行) → 派生类构造函数。

  毫无疑问,Java类的执行顺序十分重要,谨记于心。

图示Java类的初始化顺序的更多相关文章

  1. java类的初始化顺序

    在java中,当我们new一个对象时,对象中的成员,初始化块以及构造方法的加载是有一定的顺序的,看下面一副图: 一.单类(无基类)下的初始化顺序: public class Parent { stat ...

  2. Java类的初始化顺序 (静态变量、静态初始化块、变量、初始...

    很有意思的一篇文章 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方法 2.有继承的情况 父类静态变量->父类静态初始化块->子类静态变量- ...

  3. Java类成员初始化顺序

    类中包含7中成员:1.静态变量 static2.final静态常量 final static3.静态代码块 static{}  //多个代码块顺序执行 4.普通变量5.普通代码块 {}  //多个代码 ...

  4. java 类的初始化顺序

    有父类 1. 父类static成员变量 2. 父类static块 3. 父类非static成员 4. 父类非static块 5. 父类构造方法 子类,也按照1-5顺序执行 无父类 1. static成 ...

  5. Java笔记 #04# 类的初始化顺序补充

    参考java中的类的初始化顺序详解 package org.sample; class Bread { Bread() { System.out.println("Bread()" ...

  6. java创建对象 的初始化顺序

    java创建对象 的初始化顺序 1.初始化块 初始化块通常写在类的构造方法之前,由花括号括起来,通常包含对成员属性进行初始化的语句: 初始化块分为instance初始化块和static初始化块,初始化 ...

  7. Java学习笔记二十三:Java的继承初始化顺序

    Java的继承初始化顺序 当使用继承这个特性时,程序是如何执行的: 继承的初始化顺序 1.初始化父类再初始子类 2.先执行初始化对象中属性,再执行构造方法中的初始化 当使用继承这个特性时,程序是如何执 ...

  8. java类的初始化和构造函数

    本人小白一枚,看java类的初始化的时候好晕的说,我觉着书上尽管说的对.但总认为有些信息没说出来,没说清楚,看了好多文章博客的,如今有些感悟,来小写下总结,也算是为以后再次复习种个好果子. 先摘一下书 ...

  9. C#多态;父类引用指向子类对象;new和override的区别;new、abstract、virtual、override,sealed关键字区别和使用代码示例;c#类的初始化顺序

    关于父类引用指向子类对象 例如: 有以下2个类 public class Father { public int age = 70; public static string name = " ...

随机推荐

  1. Elasticsearch 滚动重启 必读

    关键词:elasticsearch , es , 滚动重启 , 禁止分片 由于之前es GC没有怎么调优,结果今天被大量scroll查询查挂了,GC 卡死了.然后为了先恢复给业务使用,也没什么其他办法 ...

  2. [Educational Round 13][Codeforces 678F. Lena and Queries]

    题目连接:678F - Lena and Queries 题目大意:要求对一个点集实现二维点对的插入,删除,以及询问\(q\):求\(max(x\cdot q+y)\) 题解:对每个点集内的点\(P( ...

  3. 36ArcGIS API for JavaScript3.X 系列加载天地图(经纬度)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 【ASP】session实现购物车

    1.问题提出 利用session内置对象,设计并实现一个简易的购物车,要求如下: 1)利用用户名和密码,登录进入购物车首页 2)购物首页显示登录的用户名以及该用户是第几位访客.(同一用户的刷新应该记录 ...

  5. cadence PCB板级设计

    总结PCB板框设计,定位孔的放置,以及布线区域和元件放置区域的放置,最重要的是层叠结构的设计.

  6. CUDA执行模型

    1.设备管理和查看: cudaError_t cudaGetDeviceProperties(cudaDeviceProp * prop,int device) 用户可以通过这个函数来查看自己GPU设 ...

  7. 手机touch事件及参数【转】(自己懒得写了,找了一篇摘过来)

    [html5构建触屏网站]之touch事件 前言 一个触屏网站到底和传统的pc端网站有什么区别呢,交互方式的改变首当其冲.例如我们常用的click事件,在触屏设备下是如此无力. 手机上的大部分交互都是 ...

  8. js-day03-事件响应和练习题

    DOM事件编程 事件驱动编程:所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数).当然事件不仅限于用户的操作. 当对象处于某种状态时,可以发出一个消息通知,然 ...

  9. R语言读取EXCEL文件的各种方法

    路径问题 原始文件路径C:\Users\air\Desktop\1.txt R中有两种方法读取该路径 C:\\Users\\air\\Desktop\\1.txt C:/Users/air/Deskt ...

  10. 【计算机篇】Office 2016 for Mac 安装和破解教程

    免责声明 请亲们支持正版.这教程旨在分享,供参考. 为啥写这篇文章 对于大多数使用 Mac 的用户而言,虽然有苹果自家的办公软件,但功能少,用起来不舒服.而 Offer 2016 版的需要登录激活购买 ...