初始化块、静态初始化块、构造器运行的先后次序

【AutoDL】使用云服务器跑深度学习代码 1.算力市场 租用服务器,选择自己心仪的服务器2.镜像可以选择一些基础的镜像,社区镜像里是git上有的环境。3.上传文件在文件存储中,选择上传的区,在右边点击上传,选择自己的文件上传到云服务器中。 阅读详情

转自:http://www.oschina.net/question/1245989_157282?sort=default&p=2#answers


有一道经典的试题,倒在上面的人许多

public class A {
    public A(){
        System.out.println("A3");
    }
    {
        System.out.println("A1");
    }
    static {
        System.out.println("A2");
    }
}

再写个B类

public class B extends A {
    public B(){
        System.out.println("B3");
    }
    {
        System.out.println("B1");
    }
    static {
        System.out.println("B2");
    }
 
 
    public static void main(String[] args) {
        A a1=new B();
        B a2=new B();
    }
}

然后执行B类的main方法,请给出在控制台输出的内容是怎样的。

--------------------------------------------------------------------------------------

答案:

第一个new B();

1.先执行2个静态代码块,静态代码块按类加载的顺序:A2 B2

2.先初始化父类再初始化子类,先执行类代码块再执行构造方法:A1 A3 B1 B3

第二个new B()

3.静态初始化块只初始化一次。A1 A3 B1 B3


综上:A2 B2 A1 A3 B1 B3 A1 A3 B1 B3

Win11系统下Abaqus2022与VS2022+oneAPI2023环境配置全攻略(附VUMAT子程序避坑指南) 本文详细指导在Windows 11系统下,为Abaqus 2022配置Visual Studio 2022与Intel oneAPI 2023的Fortran编译环境,以支持VUMAT等用户子程序开发。内容涵盖软件安装顺序、环境变量关联、快捷方式修改及关键验证步骤,并提供了首个VUMAT子程序的实战编写与模型验证方法,帮助用户高效搭建稳定可靠的仿真开发平台。 阅读详情

相关推荐

DeepLearning tutorial(7)深度学习框架Keras的使用-进阶

上一篇文章总结了Keras的基本使用方法,相信用过的同学都会觉得不可思议,太简洁了。十多天前,我在github上发现这个框架的时候,关注Keras的人还比较少,这两天无论是github还是微薄,都看到越来越多的人关注和使用Keras。所以这篇文章就简单地再介绍一下Keras的使用,方便各位入门。主要包括以下三个内容: 训练CNN并保存训练好的模型。 将CNN用于特征提取,用提取出来的特征训练SVM。

wepon的专栏 2万+

普通初始化块、静态初始化块、构造器三者执行顺序

一、普通初始化块

见贤思齐 626

OpenIddict实战:5步搞定.NET Core应用的OIDC单点登录集成

本文详细介绍了如何使用OpenIddict在.NET Core应用中快速实现OIDC单点登录集成。通过五个关键步骤,包括环境准备、数据库集成、客户端注册、令牌配置和多应用SSO集成,帮助开发者高效构建安全的企业级单点登录解决方案。

lambda的博客 727

构造器,构造代码块,静态代码块的执行顺序

题目一:LeafTest.java 总体顺序是 package com.atguigu.exer05; //总结:由父及子,静态先行 class Root{ static{ System.out.println("Root的静态初始化块"); } { System.out.println("Root的普通初始化块"); } public Root(){ super(); System.out.println("Root的无参数的构造器"); } } class Mid ex

好想去看海 230

LDPC码介绍:基础&编码&译码

本博客介绍了LDPC码的基本原理,其中包括校验矩阵的构造、Tanner 图和编译码的基础知识。

渺小的颗星的博客 4309

AR1020触摸控制器驱动开发:嵌入式I²C/SPI底层集成指南

电容式触摸控制器是现代嵌入式人机交互(HMI)系统的核心感知单元,其工作原理基于寄生电容变化检测与数字信号处理。Microchip AR1020 作为典型单芯片方案,内置硬件滤波、多点跟踪与手势识别引擎,通过I²C或SPI接口输出结构化事件数据,显著降低主控MCU负载。该类器件的技术价值在于平衡精度、功耗与实时性,广泛应用于工业HMI、医疗设备及车载终端等对可靠性要求严苛的场景。本文聚焦AR1020的寄存器映射、中断驱动模型、坐标解析机制及在STM32平台的HAL/LL级工程实现,涵盖硬件时序约束、固件配置

weixin_29323977的博客 600

关于java中(静态)初始化块与构造方法执行顺序问题

前几天看一篇文章关于初始化块的问题,于是回想了之前关于这方面的总结,其实不一样非要记住它们的执行顺序:只要你从底层去理解即可。1.首先static初始化块是在构造函数之前执行的,而且只执行一次,即类首次加载时。大家可以这样想象,初始化是在类加载时候完成的,二构造方法是生成对象的,生成对象肯定是在类加载之后完成的。所以简明扼要,只有先加载后生成对象嘛,所以肯定是先执行初始化块。2.初始化块是分为静态...

weidianlun的博客 2905

【升级U8+】不能将值 NULL 插入列 ‘VT_ID‘,表 ‘VoucherItems‘;列不允许有 Null 值。

不能将值 NULL 插入列 ‘VT_ID’,表 ‘UFDATA_006_2012.dbo.VoucherItems’;列不允许有 Null 值。INSERT 失败。

努力不懈的为广大客户提供优质的产品与真诚、贴心、专业的服务! 517

Java:构造器,构造代码块,静态代码块的执行顺序

Java:构造器,构造代码块,静态代码块的执行顺序

一只苟延残喘的卑微蝼蚁 925

【CASS精品教程】006:CASS7.1 道路设计参数文件打开无响应,提示roadpara解决办法,权威解决办法汇总

在用CASS7.1 软件进行断面法土方量计算,在生成断面图后,需要进行道路设计参数文件的设计,打开断面设计参数文件的时候,无响应,提示roadpara,如下所示: 道路设计参数文件 解决办法有三种 第一种方法:Win+R (1)64位系统:输入regsvr32 C:\Windows\SysWOW64\CellCtrl5.ocx,回车 (2)32位系统输入regsvr32 C:...

智慧空间实验室 1万+

172、摄像头振动与异响分析:VCM 共振、OIS 机械噪声的用户体验改善

摘要: 本文深入探讨了手机摄像头模组中VCM(音圈马达)与OIS(光学防抖)系统产生的振动异响问题及其解决方案。通过实际案例,分析了VCM弹簧片共振、OIS悬丝机械噪声以及系统级共振的成因,提出了硬件改进(如弹簧片厚度调整、阻尼材料应用)、驱动优化(PWM频率微调、软启动配置)和算法避让等综合解决策略。特别强调了量产阶段隐蔽性问题的排查技巧,包括扫频测试、机械阻尼处理和用户体验优化方法(如频率掩蔽)。作者建议工程师避免过度依赖仿真数据,重视实物测试,并与声学团队协作,以解决这类"玄学"问题,提升用户感知体验

sundong_81的博客 128

静态初始化块和非静态初始化块。

在Java中,有两种初始化块:静态初始化块和非静态初始化块。 它们都是定义在类中,用大括号{}括起来,静态代码块在大括号外还要加上static关键字。 非静态初始化块(构造代码块): 作用:给对象进行初始化。对象一建立就运行,且优先于构造函数的运行。 与构造函数的区别:非静态初始化块给所有对象进行统一初始化,构造函数只给对应对象初始化。 应用:将所有构造函数共性的东西定义在构造代码块中。 对于普通的类而言,可以放在初始化块中的初始化工作其实完全可以放到构造函数中进行,只不过有时会带来些许不便,如有多个构造器

qq_33529832的博客 738

亚马逊跨境电商选品数据分析:Python爬虫实战指南

本文将带领大家构建一套完整的亚马逊选品数据采集与分析系统,使用最新的Python技术栈,从零开始爬取亚马逊商品数据,并进行深度分析。

2201_76125261的博客 299

初始化块(非静态)

一:初始化块——非静态初始化块   变量的赋值,有两种常用的方式。   1:变量声明中赋值。   2:构造函数中赋值。   事实上,java提供了第三种机制——初始化块。    例如:class InitBlock { //构造函数赋值 public InitBlock() {  //对另一构造函数的调用,且必须为第一行  this("fff",300);  bi = 200;  str1 = "

winer2008的专栏 2403

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

初始化块,调用其他构造器,包的使用

package com.horst.corejava; import java.util.Random; public class EmployeeTest { public static void main(String[] args) { // TODO Auto-generated method stub Employee[] staff = new Employee[3]; staff[0] = new Employee("tom", 40000); staff[1] = n.

ningraner的博客 176

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java 初始化块

UserTest类 User类 结果

悄悄quite 490

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android 初始化类,Android 常用编程技巧/Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)...

1、设置屏幕的亮度:WindowManager.LayoutParamslp=getWindow().getAttributes();lp.screenBrightness=1.0f;getWindow().setAttributes(lp);WindowManager.LayoutParams 的 screenBrightness 是一个 0 表示最暗,1表示最亮的浮点数。1.0f 表示 100...

weixin_33199715的博客 981

java构造器调用的步骤实例解析(包含静态初始化块,对象初始化块)

应用实例: 运行结果: 解析: 首先对所有数据域初始化:k , i , n , j被初始化为0。 从上倒下按照类声明出现的次序,依次执行。静态域要比非静态域先执行。 如果静态域中有对非静态域的调用,此时调用的是非静态域变量的初始化值。 在本例中 先执行第一行。 public static int k = 0;//k=0 执行第二行: public static Test1 t1 = new Te...

qq_36665653的博客 244

Java的初始化块

初始化块是一种初始化数据域的方法。

飞鱼的博客 473

夯实基础-java基础学习-初始化块

Java使用构造器来对单个对象进行初始化操作,使用构造器先完成整个java对象的状态初始化,然后将java对象返回给程序,从而让该java对象的信息更加完整。与构造器作用非常类似的是初始化块,它也可以完成java对象的初始化工作

weixin_40787604的博客 168

从字节码层面彻底弄清Java类的初始化顺序

下面这个顺序是网上大部分的说法:对于没有继承关系的类,初始化顺序为:静态变量->静态初始化块->实例变量->实例初始化块->构造器。(静态变量与静态初始化块的初始化只会执行一次)。对于有继承关系的类,初始化顺序为:父类静态变量->父类静态初始化块->子类静态变量->子类静态初始化块->父类实例变量->父类实例初始化块->父类构造方法-&g...

qq_22158743的博客 415

总结Java类的初始化先后次序

有时候在笔试面试的时候会考到初始化的顺序,在此总结一下。单个java初始化次序: 依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器 静态变量和静态初始化块是根据出现的顺序进行初始化的,变量和初始化块也是。存在继承情况的初始化执行次序:父类–静态变量 父类–静态初始化块 子类–静态变量 子类–静态初始化块子类main方法父类–变量 父类–初始化块 父类–构造器子类–变量 子

可乐薯片编程小课堂 326

JAVA面试题解惑系列(一)——类的初始化顺序

作者:臧圩人(zangweiren)网址:http://zangweiren.javaeye.com 大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果。这实际上是在考查我们对于继承情况下类的初始化顺序的了解。我们大...

weixin_30687587的博客 61

java private 初始化_Java实例域初始化方式1.构造器public class Employee { private String name; private...

Java实例域初始化方式1.构造器public class Employee {private String name;private String gender;private int age;private double salary;public Employee() {this.salary = 1000.0;}public Employee(String name, String gen...

weixin_29467909的博客 993

关于初始化块

关于初始化块:  a.一个类可以有多个非静态初始化块初始化块,按照初始化块的顺序执行。     b.非静态初始化块是在构造类对象时执行,先执行初始化块,再执行构造主体部分。     c:非静态初始化块能对静态变量,实例变量进行初始化     构造器的具体处理步骤:  1)所有数据域被初始化为默认值(0、false或null)。 2)按照在类声明中出现的次序,依次执行所有域初始

erix1991的专栏 494

java 初始化块

【0】README0.1) 本文描述+源代码均 转自 core java volume 1, 旨在分享初始化块 or 静态初始化块的调用过程;【1】初始化块相关1.1)前面讲过了 两种初始化数据域的方法: 在构造器中设置值 + 在声明中赋值; 1.2)java还有第3种机制, 称为初始化块: 在一个类的声明中, 可以包含多个代码块, 对以上代码的分析(Analysis)A1)无论使用哪一个构造

PacosonSWJTU的博客 756
上一篇: Java的位运算
下一篇: String.format函数使用方法介绍
KingLearnJava
博客等级 码龄12年 93粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值