Java基础—执行优先级—静态代码块 / 构造代码块 / 构造函数 / 父子级有参无参构造函数

【Core Java系列1】一文讲透父子类中静态变量,成员变量初始化顺序原理 static {static {然后新建一个测试类:输出结果:很明显,第一句话还没有实例化对象就可以输出静态变量,所以静态变量优先级最高,静态代码块也是一样会加载,多个代码块之间按先后顺序加载。第二句成员变量先初始化了变量,再执行了构造器。所以可以得出如下结论:1、静态变量优先级最先被初始化,多个静态代码块按代码先后顺序进行加载2、成员变量先赋值,再执行构造函数父类和子类变量加载顺序将上面的父类简单改造一下:static { 阅读详情

父类:

public class Parents {

    private String param;

    public Parents(){
        System.out.println("父级-构造函数-无参");
    }

    public Parents(String param){
        this.param = param;
        System.out.println("父级-构造函数-有参:"+param);
    }

    {
        System.out.println("父级-构造代码块");
    }

    static {
        System.out.println("父级-代码块-静态");
    }

    public void getParams(String param){
        System.out.println("父级-方法-有参:"+param);
    }

}

子类:

public class Sons extends Parents {

    private String param;

    public Sons(){
        System.out.println("子级-构造函数-无参");
    }

    public Sons(String param){
//        super(param);
        this.param = param;
        System.out.println("子级-构造函数-有参:"+param);
    }

    {
        System.out.println("子级-构造代码块");
    }

    static{
        System.out.println("子级-代码块-静态");
    }
    
    @Override
    public void getParams(String param){
        System.out.println("子级-方法-有参:"+param);
    }

    public static void main(String[] args) {
        Sons sons = new Sons("DroyZhou");
        sons.getParams("ZhouDroy");
}

输出结果:

父级-构造代码块-静态
子级-构造代码块-静态
父级-构造代码块
父级-构造函数-无参
子级-构造代码块
子级-构造函数-有参:DroyZhou
子级-方法-有参:ZhouDroy

优先级观察总结:

  1. 静态代码块执行优先级最高,而父类又高于子类。

java静态代码块,用于初始化类,在虚拟机加载类时就会执行,所以会优先执行,但只执行一次。

  1. 构造代码块内容优先于构造函数内容执行。

找到编译后的*.class文件查看,会发现所有构造函数第一行都添加了构造代码块的内容。

  1. 构造函数,父类优先级高于子类。

子类的构造函数中,无参状态下其实第一行默认是super()执行父类构造函数,而有参状态下第一行必须是super(params…)。

  1. 方法,优先执行子集重写的方法,如果子集未重写则执行父级方法。
79、昇腾系列服务器/昇腾系列推理卡/昇腾系列嵌入式开发板+Dify+one api部署DeepSeek-R1-Distill-Qwen-32BW8A8+RAG本地模型知识库和负载均衡双实例 阶段,安装过程缺什么,,在docker外面git下源码,进入容器内部进行量化,这里的容器建议在创建个8卡的容器,双卡容器量化会显示npu显存不够,除非你用cpu转模型,我就懒得创建容器了,使用cpu量化吧,巨慢;创建容器,进入容器,计划使用两张昇腾NPU卡推理DeepSeek-R1-Distill-Qwen-32B的W8A8模型,所以构建的容器用两张卡,选6、7卡吧,0-6号卡可以跑文本嵌入模型、重排序模型;直接进入量化阶段,在容器外面操作即可,环境不用管,因为系统已经默认配置了环境,直接跳到。 阅读详情

相关推荐

放弃FFT全频计算!在STM32F407上用DFT单点计算提速50%的优化技巧

本文详细介绍了在STM32F407上通过DFT单点计算实现比FFT快50%的优化技巧,特别适用于生物阻抗分析、振动监测等只需关注单一频点的嵌入式场景。通过预计算相位角、查表法和混合精度计算等策略,显著提升计算效率和内存利用率,同时保持高精度。

weixin_28738397的博客 191

父类、子类的无参构造方法和带参构造方法 的运行先后顺序

结论: 无参构造方法比有参构造方法先运行; (构造方法)当父类为无参,子类有参时,也是无参先运行。 1.建一个父类:Female;一个子类:girl,子类继承父类; 2.父类有无参数构造方法分别设为: public female(){ System.out.println("female的无参构造方法 "); } public female(String n){ System.out.println("(有参数)fema...

TKino11的博客 2572

西门子S7-1200的PID应用(恒温热水器)

物料清单:1200PLC一台,模拟量输入模块SM1231(PLC自带的输入通道不支持4-20mA电流输入)一个,PT100一个,温度变送器,热得快,固态继电器。 第一步,硬件接线; 第二步,新建1200工程,添加PLC和模拟量输入模块,修改模块的模拟量输入类型为4-20mA,模拟量模块的IO地址为96-103(8个字); 第三步,新建循环组织块OB30,循环时间选择默认点1...

weixin_30835649的博客 6549

Java——构造代码块优先于构造函数执行

构造代码块: 作用:给对象进行初始化。 对象一建立就运行,而且优先于构造函数执行。 构造代码块与构造函数的区别: 构造代码块是给所有对象进行统一初始化, 而构造函数是给对应的对象初始化。 构造代码快中定义的是不同对象共性的初始化内容。 //一旦创建对象,构造代码块先于构造函数执行 class Person { private String name; private int ag...

caigen0001的专栏 1962

描边盛开火玫瑰

python描边盛开火玫瑰 代码如下 import turtle as t t.setup(800,800) t.hideturtle() t.speed(11) t.penup() t.goto(50,-450) t.pensize(5) t.pencolor("black") t.seth(140) t.pendown() t.speed(10) t.circle(-300,60) t.fd(100) #jiaodu80 #1ye t.seth(10) t.fd(50) t.fillcolor("gr

weixin_50973371的博客 2062

智能解决装箱问题:使用优化算法实现高效包装

装箱问题(Bin Packing Problem)是组合优化领域中的一个经典问题,主要涉及如何将一系列对象高效地装入有限数量的容器(或“箱”)中,同时满足特定的约束条件。这个问题的目标是最小化所需使用的箱子数量或者最大化箱子的装载效率,以减少空间或资源的浪费。

MindOpt_003的博客 5545

面试题:关于静态块、构造块、构造函数、普通代码块的优先级问题

面试题:关于静态块、构造块、构造函数、普通代码块的优先级问题 静态块:的优先级最高,伴随类的加载而加载,且只会加载一次 构造块:即成员代码块(写在类体中的代码块),优先级次于静态块,高于构造函数,且每次创建新对象都会执行 构造函数:优先级次于静态块、构造块,每次创建新对象都会调用 普通快:最没地位,优先级最低 总结: 静态块 > 构造块 > 构造函数 > 普通快 看下面一段代码,了解在继承关系中,四者的优先级及调用顺序 父类 public class Father { //

老痒的农舍 395

MPU6050数据融合避坑指南:当欧拉角遇到万向节死锁,我们该如何处理?

本文深入探讨了MPU6050在姿态解算中遇到的欧拉角万向节死锁问题,提供了四元数解决方案及工程实践策略。通过分析死锁现象的本质,介绍四元数的优势与实现方法,并给出必须使用欧拉角时的三种应对方案,帮助开发者有效规避数据跳变和解算失效问题。

weixin_30415113的博客 541

构造代码块、静态代码块、无参构造函数和有参构造函数的执行顺序

一直对构造代码块、静态代码块、无参构造函数和有参构造函数的执行顺序和执行次数混淆不清,所以记录一下它们的执行顺序以及执行次数。记录的不是很详细,留待补充。代码:package com.yoko.test1; class FatherModel {          {         System.out.println("执行父类构造代码块");     }     static{       ...

程序猿YOKO 2611

SI好文翻译:铜箔表面纹理对损耗的影响:一个有效的模型(一)

Paul G. Huray发表在DesignCon2010的提出铜箔表面雪球模型的论文。第一部分说明之前的铜箔表面模型只适用于5GHz以内,超过5GHz后就不再准确。

小孟同学的博客 2169

基于Blender软件对Matterport3D数据集场景可视化

使用Blender软件对 Matterport3D 中的室内场景进行可视化。

qq_44100524的博客 289

静态代码块、构造函数、构造代码块

执行顺序: 父类静态代码块> 子类静态代码块 > 父类构造代码块 > 父类构造函数 >子类构造代码块> 子类构造函数 > 普通代码块 1、静态代码块–在java类中使用static{}包裹的代码 public class testA{ static{ System.out.println("hello"); } } 静态代码块在类被加载时运行,只运行一次,优先于各种代码块和构造函数。如果一个类中有多个静态代码块,按照书写顺序依次执行。

qq_42617455的博客 689

5大步骤!轻松玩转Dorisoy.Rigger:基于.NET Core 6、MAUI和Blazor的多数据库开发框架生成器

各位小伙伴,你们是否厌倦了每次项目启动都要从头配置数据库连接、编写重复的代码?今天,我们就来聊聊如何使用Dorisoy.Rigger这个强大的开发框架生成器,让你的.NET Core 6、MAUI和Blazor项目开发变得简单又高效!准备好迎接开发的新乐趣了吗?让我们一起开始吧!接下来,我们需要定义数据模型。假设我们有一个简单的用户表,包含ID、用户名和密码字段。在项目中创建一个新的类文件,命名为User.csset;set;set;这段代码定义了一个用户模型,其中包含了用户的ID、用户名和密码。

java专栏 1738

Java中成员变量、代码块、静态代码块、静态变量和构造函数在加载时的优先级

JAVA初始化顺序:1.初始化静态属性,即静态代码和静态变量。按照先父类再子类的顺序初始化。2.初始化类属性,即成员变量、代码块和构造函数。其中类变量和代码块优先级相同且均优先于构造函数。也是按照先初始化父类再子类的顺序。我们可以看到,类的初始化分为两大部分:即静态属性和非静态属性。静态属性优先于非静态属性。优先级层次(相同优先级的属性按程序先后顺序初始化):第一级:静态属性1. 父类:  静态成...

baiyuexuanxuan的博客 1304

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

关于构造函数及参数执行顺序说明(c#)

以前自己对这方面的内容一直比较模糊,只是知道一个大概的顺序,具体确切的执行顺序不能确定,于是抽空做了一个详细的测试,对其进行一番研究. 具体的程序代码比较简单,如下所示. 三个类分开来写的,一个父类,一个子类,一个测试类: 父类: using System; namespace TestInherit { public class Father { public int father_a=111; public int father_aa=1111; public readonly int

极客神殿 4505

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java父子类中静态代码块构造器执行顺序

===============最后执行顺序如下==============被static修饰的代码块,是属于当前类的信息,是用来初始化类的信息。在类被加载的时候就会执行,只执行一次,并且优先于主方法。其次②父类加载顺序 优先于。的加载是 优先于 父子类的。所有非静态代码块中代码都是在创建对象时自动执行,父类优先于子类被加载。

ZhaZha_Yi的博客 155

efm32 入门.pdf

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

java中静态代码块详解

静态代码块

yangzhe19931117的博客 1655

JAVA中类内容的先后加载顺序

目录 1. 类内容的几个概念 a. 静态代码块 b. 构造代码块 c.构造函数 d. 普通代码块 2. 类实例化的执行顺序 a. 代码 b. 执行结果 1. 类内容的几个概念 a. 静态代码块 静态代码块在类被加载的时候执行,并且只执行一次,它的优先级是最高的,在构造代码块和构造函数和main方法之前。如果有多个静态代码块,按代码编写的顺序执行。 静态代码块只能在类里,不能在方法里,对于静态方法:在类加载的时候,静态方法也已经加载了,但是我们必须要通过类名或者对象名才能访问,..

安余生的博客 645

java中静态代码块,构造代码块,静态代码块的区别

执行顺序:(优先级从高到低。)静态代码块>main方法>构造代码块>构造方法 普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行” 构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象(new)时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造

chengxl90的博客 449

java第二阶段之代码块codeblock

代码块也是分静态 非静态 和类变量/静态变量一起食用更好

m0_60812750的博客 402

Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序...

实例化子类时,父类与子类中的静态代码块、实例代码块、静态变量、实例变量、构造函数的执行顺序是怎样的? 代码执行的优先级为: firest:静态部分 second:实例化过程 详细顺序为: 1.父类静态代码块与父类静态变量(取决于代码书写顺序) 2.子类静态代码块与子类静态变量(取决于代码书写顺序) 3.父类实例变量与父类代码块(取决于代码书写顺序) 4.父类构造函数...

weixin_30753873的博客 95

关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的研究

综合网上的相关帖子和我自己的调试,研究了一下关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序问题。首先看一段程序:class X { Y b = new Y();// 7、这里是父类成员变量初始化 static Y sb = new Y();// 1行、父类静态变量,输出static Y(静态代码块先初始化),2行:Y static {  System.out.print

欢迎来到我的博客 4491

深入理解Thread构造函数

Java 中提供了丰富的构造函数,在本文中,将介绍每一个构造函数,以及分析一些可能你未关注的细节 线程的命名 在构造线程的时候可以为线程起一个特殊意义的名字,有利用实际问题的排查和线程跟踪 线程的默认命名 public Thread() { init(null, null, "Thread-" + nextThreadNum(), 0); } p...

yisish的博客 1376

Java中普通代码块,构造代码块,静态代码块区别及运行顺序(子类,父类中运行顺序)

1 普通代码块//普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行” public class CodeBlock01{ public static void main(String[] args){ { int x=3;

yjl33的专栏 627

代码块的执行顺序

代码块的执行顺序 当父类与子类都有静态代码块和构造函数的时候,执行顺序如下: 父类静态代码块 > 子类静态代码块 父类构造函数 > 子类构造函数(先有父亲,后有孩子) 如果是多级继承关系的话,最高层的父类首先执行,然后依次递减 总结:静态优先执行,父类优先执行 注意:静态代码块是在JVM加载类的时候执行的,而且静态代码块执行且仅执行一次 总结 1.父类的静态代码块 只执行一次 并且在类加载的时候执行 2.子类的静态代码块 3.父类的代码块 4.父类的构造方法 5.子类的代码块 6.子类的构造方法

weixin_48303524的博客 362

记住java知识点_【持续更新】Java知识点整理-基础

运算符优先级java运算符优先级记忆口诀:单目乘除为(位)关系,逻辑三目后(填词,无意义)赋值。强制类型转换优先级是高于乘除但低于单目的:int a = (int) Math.random()*10// a始终为0实际开发中不用刻意去记,小括号写着方便也易读懂。==、equals()以及hashcode()==比较的是对象地址(引用),看是否为同一对象Integer与int会自动拆箱、Intege...

weixin_35945480的博客 159
上一篇: Java基础——泛型
下一篇: java程序向mysql添加中文数据时发生异常:java.sql.SQLException: Incorrect string value: ‘\xE6\x9D\x8E\xE5\x87\xA4‘
Droy`Z
博客等级 码龄19年 75粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值