Java初始化顺序

永磁同步电机解耦控制实战:从电流反馈到内模解耦的算法演进与选型指南 本文深入探讨了永磁同步电机高性能驱动中的核心挑战——交叉耦合问题,并对比分析了电流反馈解耦和内模解耦两大主流算法的原理、性能与适用场景。文章指出,电流反馈解耦动态响应快但对参数敏感,内模解耦鲁棒性更强但略有滞后,为工程师在不同应用需求下的算法选型提供了清晰的实战指南。 阅读详情
1  无继承情况下的Java初始化顺序:
class Sample
{
      Sample(String s)
      {
            System.out.println(s);
      }
      Sample()
      {
            System.out.println("Sample默认构造函数被调用");
      }
}
class Test{
      static Sample sam=new Sample("静态成员sam初始化");
      Sample sam1=new Sample("sam1成员初始化");
      static{
            System.out.println("static块执行");
            if(sam==null)System.out.println("sam is null");
            sam=new Sample("静态块内初始化sam成员变量");
            }
      Test()
      {
            System.out.println("Test默认构造函数被调用");
      }

}
//主函数
 public static void  main(String  str[])
{

     Test a=new Test();

 }
输出结果为:
静态成员sam初始化     -----静态成员初始化
static块执行          -----静态块被执行
静态块内初始化sam成员变量 ----静态块执行
sam1成员初始化      -----普通成员初始化
Test默认构造函数被调用  -----构造函数执行


由此可以得出结论:
a 静态成员变量首先初始化(注意,Static可以看做一个静态成员,其执行顺序和其在类中申明的顺序有关)
b 普通成员初始化
c 执行构造函数。

对于静态成员(static块可以看成普通的一个静态成员,其并不一定在类初始化时首先执行)和普通成员,其初始化顺序只与其在类定义中的顺序有关,和其他因素无关。
例如下面的例子:


class Test{
      static{
            System.out.println("static 块 1  执行");
            }
      static Sample staticSam1=new Sample("静态成员staticSam1初始化");
      Sample sam1=new Sample("sam1成员初始化");
      static Sample staticSam2=new Sample("静态成员staticSam2初始化");
      static{
            System.out.println("static 块 2  执行");
            }
      Test()
      {
            System.out.println("Test默认构造函数被调用");
      }
      Sample sam2=new Sample("sam2成员初始化");

}


则结果为:
static 块 1  执行
静态成员staticSam1初始化
静态成员staticSam2初始化
static 块 2  执行 
                      --------静态成员
sam1成员初始化
sam2成员初始化
                      --------普通成员
Test默认构造函数被调用
                      --------构造函数


2 Java继承情况下的初始化顺序:

class  Test{
       static {
            System. out .println( "父类static 块 1  执行" );
            }
       static  Sample  staticSam1 = new  Sample( "父类 静态成员staticSam1初始化" );
      Sample  sam1 = new  Sample( "父类 sam1成员初始化" );
       static  Sample  staticSam2 = new  Sample( "父类 静态成员staticSam2初始化" );
       static {
            System. out .println( "父类 static 块 2  执行" );
            }
      Test()
      {
            System. out .println( "父类 Test默认构造函数被调用" );
      }
      Sample  sam2 = new  Sample( "父类 sam2成员初始化" );

}

class  TestSub  extends  Test
{
       static  Sample  staticSamSub = new  Sample( "子类 静态成员staticSamSub初始化" );
      TestSub()
      {
            System. out .println( "子类 TestSub 默认构造函数被调用" );
      }
      Sample  sam1 = new  Sample( "子类 sam1成员初始化" );
       static  Sample  staticSamSub1 = new  Sample( "子类 静态成员staticSamSub1初始化" );
      
       static {System. out .println( "子类 static 块  执行" );}
      Sample  sam2 = new  Sample( "子类 sam2成员初始化" );
}

执行结果:
父类 static 块 1  执行
父类 静态成员staticSam1初始化
父类 静态成员staticSam2初始化
父类 static 块 2  执行
                        --------父类静态成员初始化
子类 静态成员staticSamSub初始化
子类 静态成员staticSamSub1初始化
子类 static 块  执行
                        -------子类静态成员初始化
父类 sam1成员初始化
父类 sam2成员初始化
父类 Test默认构造函数被调用       
                        -------父类普通成员初始化和构造函数执行
子类 sam1成员初始化
子类 sam2成员初始化
子类 TestSub 默认构造函数被调用
                        -------父类普通成员初始化和构造函数执行


由此得出Java初始化顺序结论:
1 继承体系的所有静态成员初始化(先父类,后子类)
2 父类初始化完成(普通成员的初始化-->构造函数的调用)
3 子类初始化(普通成员-->构造函数)


Java初始化顺序如图:
【100%通过率】华为OD机试真题 Java&Go 实现【微服务的集成测试】【2023 Q1 | 100分】 现在有n个容器服务,服务的启动可能有一定的依赖性(有些服务启动没有依赖),其次服务自身启动加载会消耗些时间。给你一个nxn 的二维矩阵 useTime,其中 useTime=10 表示服务i自身启动加载需要消耗10s,useTimeli[j]=1 表示服务i 启动依赖服务i 启动完成,useTimei[k]=0,表示服务i 启动不依赖服务 k其实 0 阅读详情

相关推荐

AutoCAD 2024 LISP实用技巧:自定义快捷命令与高效绘图工具集

本文详细介绍了如何在AutoCAD 2024中部署和使用LISP脚本,打造高效绘图工具集。通过自定义快捷命令,如WFF(超级文字查找替换)、GQT(图层隔离)和LLTJ(智能长度统计),可大幅简化图层管理、文字编辑和测量统计等重复性操作,显著提升绘图效率。

gan8painter的博客 318

Java 类初始化(详解)

JVM 如何进行类的初始化,实例的初始化,构造器的作用与调用。

acherie的博客 2万+

stm32 Can通讯过滤器寄存器设置(实验验证)

起因:在使用stm32单片机can通讯时,参考手册的介绍与寄存器封装有差别,不好理解怎么去设置寄存器。在参考一些代码时,对怎么去设置过滤器还是难以理解。 解决: 在寄存器封装库中,我们发现CAN过滤器设置寄存器封装有CAN1->sFilterRegister[ x ].FR1 和 CAN1->sFilterRegister[ x ].FR2 两个寄存器,其封装如下:type

u013984214的专栏 3288

Java 类的初始化

Java类加载的详细过程与相关规则

suming97的博客 4085

4D毫米波雷达

详解4D成像毫米波雷达

sangba2019的博客 2393

STM32驱动AD7779:双极性电源下8通道同步ADC的SPI配置与数据采集实战

本文详细介绍了在双极性电源供电下,使用STM32通过SPI接口驱动AD7779同步ADC芯片实现8通道高精度数据采集的实战经验。重点解析了电源设计、抗干扰处理、寄存器配置、SPI通信技巧及数据校准方法,帮助工程师解决工业测量中的同步采样与噪声控制难题。

e3f4g5的博客 370

java 类的初始化

Java类的初始化 我们知道一个类(class)要被使用必须经过装载,连接,初始化这样的过程。下面先对这三阶段做一个简单的描述,之后会结合一个简单的例子来说明java中类的初始化过程。 在装载阶段,类装载器(Bootstrap ClassLoader 或者用户自定义的ClassLoader) 把编译形成的class文件载入内存,创建类相关的Class对象,这个Class对象封装...

229

从零到一:如何用GraphRAG Visualizer打造你的第一个3D知识图谱

本文详细介绍了如何使用GraphRAG Visualizer从零开始构建3D知识图谱,涵盖环境准备、Parquet数据处理、可视化操作及高级分析功能。通过简洁的步骤和实用技巧,帮助用户快速掌握这一强大的知识图谱可视化工具,提升数据分析和关系挖掘效率。

rock5的博客 219

java基础——类的初始化、实例化流程

类的初始化、实例化流程

Alex_cf的博客 1731

Dify 系列教程 | 第 6 篇:工作流入门 -- 用可视化方式编排 AI 逻辑

Dify 工作流是一个基于有向无环图(DAG)的可视化 AI 逻辑编排系统。你可以把多个处理步骤(节点)用连线串联起来,数据从起点流向终点,每经过一个节点就被处理一次。用一个类比来理解:如果单次 Prompt 调用是"一道菜",那工作流就是"一道完整的生产线" – 原材料(输入)进入流水线,经过清洗(预处理)、切配(数据转换)、烹饪(AI 推理)、装盘(格式化输出)等工序,最终产出成品。创建一个工作流类型的应用(或高级聊天类型),就会进入工作流编辑器。编辑器基于ReactFlow构建(

weixin_43674738的博客 119

用 SAP ABAP ALV 重塑 SM30:可扩展的自定义表维护视图与自动传输实践

文章摘要: 本文提出了一种基于ALV Grid的动态表维护框架,用于替代传统SM30维护视图。该方案通过输入表名自动生成维护界面,支持动态筛选、批量操作和自动传输管理。核心设计包括:利用BAdI实现扩展点、通过行状态字段简化数据变更跟踪、使用Style Table控制单元格编辑权限、集成CTS实现自动传输。相比SM30标准维护,该框架显著提升了交互体验(支持ALV排序/过滤/汇总)和业务扩展性(统一校验与权限控制),同时解决了"维护+传输"流程割裂的问题。文中详细阐述了技术实现方案,并提

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 318

Java类的初始化

Java类的初始化 我们知道一个类(class)要被使用必须经过装载,连接。初始化这种过程。以下先对这三阶段做一个简单的描写叙述。之后会结合一个简单的样例来说明java中类的初始化过程。 在装载阶段,类装载器(Bootstrap ClassLoader 或者...

aoe41606的博客 892

SpringBoot项目搭建

SpringBoot项目搭建

私信可回答各种问题~ 1022

Java类的初始化顺序

对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。初始化顺序图示:我们也可以通过下面的测试代码来验证这一点:package com.trs.oop; /** * 类的初始化顺序 * 静态变量->静态初始化块->变量->初始化块->构造器 * @author xiayunan ...

小猴子的博客 4万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【java】初始化顺序

对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。

m0_75163045的博客 872

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JAVA初始化顺序

JAVA初始化顺序 1、调用顺序: JAVA类首次装入时,会对静态成员变量或方法进行一次初始化,但方法不被调用是不会执行的,静态成员变量和静态初始化块级别相同,非静态成员变量和非静态初始化块级别相同。 先初始化父类的静态代码--->初始化子类的静态代码--

为了你 1385

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java 初始化顺序

Java初始化顺序总结如下: 1、初始化父类静态变量(域)/静态代码块(变量和代码块按照声明顺序执行初始化) 2、初始化子类静态变量(域)/静态代码块(变量和代码块按照声明顺序执行初始化) 3、初始化父类变量(域)/代码块(变量和代码块按照声明顺序执行初始化) 4、初始化父类构造器 5、初始化父子类变量(域)/代码块(变量和代码块按照声明顺序执行初始化) 6、初始化子类构造器 注意:...

GracefulGuigui的博客 863

java对象初始化顺序

java对象初始化顺序一、java对象初始化顺序二、非继承关系中的初始化顺序1.实例三、继承关系中的初始化顺序1.实例四、初始化顺序图标1.非继承关系:2.继承关系: 一、java对象初始化顺序 java对象初始化的执行顺序为:静态语句块>静态变量初始化>实例语句块/成员变量初始化>构造方法,实例语句块与成员变量初始化的相对执行顺序取决于定义的先后顺序 二、非继承关系中的初始化顺序 1.实例 代码如下(示例): package com.j2se; public class Init

m0_62478822的博客 2559

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

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

weixin_42166918的博客 590

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

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

weixin_33037313的博客 291

Java中类初始化的顺序

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

Xununan的博客 405

java 初始化顺序_JAVA初始化顺序

主要内容:1 无继承情况下的JAVA初始化顺序2 JAVA继承情况下的初始化顺序无继承情况下的JAVA初始化顺序1 classSample2 {3 Sample(String s)4 {5 System.out.println(s);6 }7 Sample()8 {9 System.out.println("Sample默认构造函数被调用");10 }11 }12 clas...

weixin_36049183的博客 147

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

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

weixin_39805409的博客 81

java初始化顺序

java初始化顺序面试的时候经常会提到java类初始化顺序,下面以我的理解阐述一下这个知识#点 加载类: 主要是初始化静态数据:如静态变量,静态块(final类型的静态常量存在于常量池, 不会被加载,有时候会有例外) 构造类:先初始化类成员变量(非静态),之后调用构造器 加载类 初学者最为常用new出一个了类的实例对象 对类的静态变量进行读取,赋值操作(静态,final且值确

zycxnanwang的博客 999
上一篇: java实现选择排序
下一篇: java初始化顺序
李华峰
博客等级 码龄12年 6粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值