Java类初始化顺序

晶圆测试(wafer sort)全流程解析:从探针卡到良率统计的实战指南 本文详细解析了晶圆测试(wafer sort)的全流程,从探针卡选型到良率统计的实战指南。涵盖了12英寸先进制程产线的关键技术,包括探针卡系统、测试程序开发、产线自动化集成及数据分析,特别聚焦多站点并行测试的时序优化和接触阻抗异常排查,帮助工程师提升测试效率与准确性。 阅读详情

先不考虑父类。初始化的一个大原则是:

(1)静态域成员(静态变量和静态代码块)最先;

(2)非静态域成员(成员变量和初始化代码块)先于构造函数;

(3)同是静态域成员或同是非静态域成员,则先后顺序和代码顺序一致

public class InitialOrder {

    private static String staticField = "Static Field Initial";

    private String field = "Field Initial";

    static {
        System.out.println(staticField);
        System.out.println("Static Patch Initial");
    }

    {
        System.out.println(field);
        System.out.println("Field Patch Initial");
    }

    public InitialOrder() {
        System.out.println("Structure Initial ");
    }

    public static void main(String[] argc) {
        new InitialOrder();
    }
}

输出:

Static Field Initial (静态变量) 
Static Patch Initial (静态初始化块) 
Field Initial (变量) 
Field Patch Initial (初始化块) 
Structure Initial (构造器)

然后考虑下父类。在上面的原则下再加一条:

(1)静态域的初始化一定是最先开始的;(当然,已经初始化过了就不再初始化了)

(2)要初始化子类,一定要先初始化父类。

public class ParentInitialOrder {
    private static String staticField = "Parent Static Field Initial";

    private String field = "Parent Field Initial";

    static {
        System.out.println(staticField);
        System.out.println("Parent Static Patch Initial");
    }

    {
        System.out.println(field);
        System.out.println("Parent Field Patch Initial");
    }

    public ParentInitialOrder() {
        System.out.println("Parent Structure Initial ");
    }

}

public class ChildInitialOrder extends ParentInitialOrder {
    private static String staticField = "Child Static Field Initial";

    private String field = "Child Field Initial";

    static {
        System.out.println(staticField);
        System.out.println("Child Static Patch Initial");
    }

    {
        System.out.println(field);
        System.out.println("Child Field Patch Initial");
    }

    public ChildInitialOrder() {
        System.out.println("Child Structure Initial ");
    }

    public static void main(String argv[]) {
        new ChildInitialOrder();
    }
}
Parent Static Field Initial (父类静态变量)
Parent Static Patch Initial (父类静态初始化块)
Child Static Field Initial (子类静态变量)
Child Static Patch Initial (子类静态代码块)
Parent Field Initial (父类变量)
Parent Field Patch Initial (父类初始化块)
Parent Structure Initial (父类构造函数)
Child Field Initial (子类变量)
Child Field Patch Initial (子类初始化块)
Child Structure Initial(子类构造函数)

测试题:

public class InitialOrderTest {
    public static int k = 0;
    public static InitialOrderTest t1 = new InitialOrderTest("t1");
    public static InitialOrderTest t2 = new InitialOrderTest("t2");
    public static int i = print("i");
    public static int n = 99;
    public int j = print("j");

    static {
        print("静态块");
    }

    {
        print("构造块");
    }

    public InitialOrderTest(String str) {
        System.out.println((++k) + ":" + str + "    i=" + i + "    n=" + n);
        ++i;
        ++n;
    }

    public static int print(String str) {
        System.out.println((++k) + ":" + str + "    i=" + i + "    n=" + n);
        ++n;
        return ++i;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        InitialOrderTest t = new InitialOrderTest("init");
    }
}

答案:

  1. j i=0 n=0
  2. 构造块 i=1 n=1
  3. t1 i=2 n=2
  4. j i=3 n=3
  5. 构造块 i=4 n=4
  6. t2 i=5 n=5
  7. i i=6 n=6
  8. 静态块 i=7 n=99
  9. j i=8 n=100
  10. 构造块 i=9 n=101
  11. init i=10 n=102
智慧园区——解读零碳智慧园区全域双碳管理建设方案【附全文阅读】 《零碳智慧园区全域双碳管理建设方案》为园区开发运营企业、政府部门及绿色能源服务商等提供系统性指导。方案基于"背景-理念-路径"框架,首先分析全球双碳趋势及我国园区高碳排放现状,明确零碳园区价值;其次提出"数字+绿色"双动力理念,构建数字底座与绿色能源体系;最后详细规划实施路径,包括碳排查、绿能规划、能效优化、碳交易等全流程管理,结合数字孪生技术实现可视化管控,助力园区实现碳中和目标。 阅读详情

相关推荐

告别Keil4!手把手教你用Keil C51 V9.61编译51单片机代码(附最新激活方法)

本文详细介绍了Keil C51 V9.61在51单片机开发中的全栈升级指南,包括编译速度提升、调试器性能优化和现代开发支持等核心优势。通过智能安装方案、项目迁移实战和新特性深度应用,帮助开发者告别Keil4,大幅提升开发效率。附有最新激活方法和实用技巧,适用于嵌入式开发工程师。

weixin_26886855的博客 420

Java,Android类加载顺序真正详解

package com.raymond.test03; public class Parent1 { { System.out.println("parent block ........" + staticVar); } public String parent = getUnStatic(); private static String staticVar = getSta

JaydenHo的专栏 2282

头歌操作系统 课堂练习4.2:页式内存管理 答案 无解析

头歌操作系统 课堂练习4.2:页式内存管理 答案 无解析

kercii的博客 1万+

JAVA类初始化顺序总结

类的初始化 {#articleHeader1} 初始化顺序 首先来看下,当一个类从main入口方法,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序: public class ClassLoadTest { private static User user = new User(); static { System.err.println("static code block...

luoyoub的博客 1万+

银行会计第2课:交易和核算分离的思想

核算作为会计的基础,将交易转化为可量化的信息,而会计则通过整合核算结果,实现对经济活动的全面把控。- 本质:指企业或主体之间发生的、能引起经济利益变动的具体事项,比如采购商品、销售货物、支付工资等,是客观发生的经济事实。可售产品(业务视角的核算对象) + 属性条件(核算的分类,限制等) = 核算类型(会计视角,含有科目分类内容)- 核算:会计人员根据采购发票、入库单等,将这笔交易记为“借:原材料,贷:银行存款”(对事实的会计处理)。- 特点:是核算的源头,不涉及会计处理,仅代表经济行为的发生。

ademen的博客 498

基于STM32与OV7670的嵌入式视频监控系统设计与实现

本文详细介绍了基于STM32单片机与OV7670摄像头的嵌入式视频监控系统设计与实现。从硬件选型、电路设计到软件开发,涵盖了摄像头驱动、TFT显示优化及图像处理等关键技术,提供了实用的调试技巧和性能优化方案,为低成本、高效率的视频监控系统开发提供完整解决方案。

desk3的博客 802

java类初始化顺序

一个Java类中会定义各种变量、方法和代码块。其中方法和代码块从存在的意义上来讲,都是为了操作这些变量的。所以就笔者个人理解,类的主体该是变量,方法和代码块是为变量而存在的。 变量值的改变有两种情形,一是在进行初始化的时候,而是在方法中对其进行操作的时候。变量值改变的先后顺序将直接影响到程序运行的正确与否,所以理正确理解变量值在Java中如何改变对于一个优秀码农来说,显得尤为重要。就以上两种

Mr_Leixiansheng的博客 549

C# 开发实战:深度解析 13.56MHz 射频卡读写应用

本文详细介绍了如何在 C# 环境下开发 13.56MHz 射频卡的读写应用。通过 ACR122U 作为硬件设备,结合 C# 提供的 COM 组件或 SDK,我们能够实现对射频卡的读取与写入功能。在实际开发中,开发者还需要根据具体应用场景选择合适的卡片类型与设备,并注意性能优化和异常处理。随着技术的发展,RFID 技术的应用场景会越来越广泛,开发者可以根据不同需求,灵活扩展读写功能,实现更加智能化和自动化的系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1602

Java中类初始化的顺序

在Java中,一个类包含静态变量、静态初始化块、变量、初始化块、构造器,它们初始化的顺序依次是(静态变量、静态初始化块) --> (变量、初始化块) --> 构造器。 public class Test { //静态变量 public static String strStatic = "静态变量"; //变量 public String strPublic = "变量...

Xununan的博客 405

ISP算法:自动白平衡(AWB)

1. 为什么要做白平衡? 人类视觉系统具有颜色恒常性特点,一次人类对物体观察不受光源影响。但是Sensor在不同光线下,物体呈现的颜色不同,在晴朗天空下会偏蓝,在烛光下会偏红。如图: 2.什么是自动白平衡? 为了消除光源对于图像传感器成像的影响,模拟人类视觉系统的颜色恒常性。保证在任何场景下看到的白色是真正的白色。 3. 如何做自动白平衡? 只要乘以一个对角矩阵,便可以进行白平衡...

a200800170331的专栏 1万+

华为OD机试 新系统 双机位C卷 往年真题 机考题库(持续收录中)以及算法考点详解

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 7万+

Java类的初始化顺序

对于静态变量、静态初始化块、变量、初始化块、构造器, 它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。 测试代码: package javaThreadLearning; class Parent { // 静态变量 public static String p_StaticField = "父类--静态变量"; protected int i = 1; protected int j = 8; // 变量

lonelyVM的博客 347

破解现代反爬虫:JS加密、OB混淆与CSS反爬的实战攻防分析

摘要: 随着反爬技术的升级,JS加密、OB混淆和CSS反爬成为主流防护手段,阻碍传统爬虫获取数据。本文解析了这些技术的工作原理,并提出破解策略:通过模拟浏览器(如Selenium、Puppeteer)执行动态JS,逆向混淆代码,以及利用开发者工具突破CSS隐藏。针对复杂防护,开发者需结合技术分析与工具应用,如API接口抓取、动态渲染破解等,以应对不断演进的反爬机制。未来,爬虫攻防将持续升级,需保持技术敏锐性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1645

java类的初始化顺序

java类的初始化顺序 有关java类的初始化顺序: 最重要的有两点 : 1. 父类初始化顺序优先于子类 2. . 静态的初始化优先于非静态 但是记忆中具体的顺序总是和实际的初始化顺序有些许的出入,为了加深记忆和理解, 自己专门写了一个类来测试类的初始化顺序 测试代码如下: /** * @author xmr * @date 2019/2/28 10:48 * @description *...

.... 307

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java 类初始化的顺序_Java类的初始化顺序

对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:public classInitialOrderTest {//静态变量public static String staticField = "静态变量";//变量public String field = "变量"...

weixin_42166918的博客 590

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java类初始化顺序_Java 类的初始化顺序

静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行执行顺序优先级:静态块,main(),构造块,构造方法1. 构造函数public 关于构造函数,以下几点要注意: 1.对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的。 2.构造函数的作用是用于给对象进行初始化。 3.一个对象建立,构造函数只运行一次,...

weixin_39547596的博客 125

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java类定义的顺序_Java类初始化顺序

只恨上课的时候没有认真听讲,在网易笔试的过程中碰到了Java类初始化顺序的题目。马上重新学习,不敢怠慢,写下此文无继承的类的初始化过程在Java中类的初始化优先级是: 静态 > 实例 > 构造器静态:包括静态变量,静态初始化块,也就是关键字 static 修饰部分的代码,静态部分的初始化,按照类内的定义顺序执行初始化。实例:和C++不同,Java的实例变量(instance varia...

weixin_42127937的博客 381

Java复习总结之解析类的初始化顺序

引言 当我们需要做一些必要的事情时,我们会根据具体的情况来确定先做什么,再做什么,就像这件事很急,所以我们先把它完成。那件事不着急,我们可以把它放在靠后的顺序再做。同理,对于Java来说,对于一个类的编译,也是分先来后到的。让我们通过下面的事例来探究Java初始化类的“先来后到”。 实例 public class StaticInit { private static int k = 1; private static StaticInit t1 = new StaticInit("t1

weixin_45974176的博客 1767

【Java第50集】java类的初始化顺序详解

阶段执行内容触发条件静态初始化静态变量赋值、静态代码块类首次加载时实例初始化实例变量赋值、实例代码块、构造函数每次创建对象时继承中的顺序父类静态 → 子类静态 → 父类实例 → 子类实例创建子类对象时。

学不可以已,活到老,学到老。 866

java调整类的顺序_java类的初始化顺序

对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:public class InitialOrderTest {// 静态变量public static String staticField = "静态变量";// 变量public String field = "...

weixin_30514003的博客 240

Java类初始化顺序(超详细)

本文详细解析了Java类的初始化顺序,涵盖无继承和有继承关系两种情况。在无继承情况下,类初始化遵循静态变量→静态块→实例变量→非静态块→构造函数的顺序;而在继承关系中,初始化顺序变为父类静态→子类静态→父类实例→父类构造→子类实例→子类构造。文章通过代码示例和流程图展示了这一过程,强调了理解初始化顺序对编写正确高效Java代码的重要性,特别是在处理复杂类结构和继承关系时能避免潜在错误。

m0_73978383的博客 1265

java 类初始化的顺序_java类初始化顺序

一、概述了解类的初始化顺序,可以更灵活、方便的构造一个类。二、类初始化顺序2.1 示例public class InitialOrderTest {public static void main(String[] args) {new InitialOrderTest();}// 变量public FieldClass field = new FieldClass("变量");// 初始化块{Sy...

weixin_30776737的博客 209
上一篇: Java GC算法
下一篇: Java NIO总结
奋起直追CDS
博客等级 码龄11年 57粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值