类加载之类构造的顺序

类的加载顺序 类的加载顺序 一、类加载的过程 先检查内存中是否存在此字节码文件,没有进行加载.class文件。 静态成员先加载,并得到初始值。 静态代码块再执行(与第二步的先后,主要是看他们之间的顺序)。 当执行new的时候,会把静态成员进行初始化,并在堆中开辟空间。 会找到相应的构造函数,但是不会直接执行。 先把实例变量进行初始值。 找到构造代码块。 进入构造函数,执行函数体。 在栈中创建引用指向堆中的实例。 二、类加载的顺序 静态成员 静态代码块 成员变量 匿名代码块 构造器 注:父类先 阅读详情

这是关于一个类加载机制中的,类初始化时关于类中的静态块,代码块,构造器,main方法的加载顺序。个人理解哈,说白了就是new一个对象时,代码的执行顺序。以下是这个小demo,记录下。

package jvm_demo;
/**
 * 类加载的过程
 * @author HMH
 * @data
 * @remark
 */
public class Demo01 {
	static{
		System.out.println("执行静态块----即静态初始化Demo01(只1次)");
	}
	{
		System.out.println("普通构造块---Demo01(跟着new走)");
	}
	public static void main(String[] args) {
		A a = new A();
		System.out.println(a.width + "---------------------------");
		A a1 = new A();
		
	}
}
class A extends A_Father{
	public static int width = 20;
	static{
		System.out.println("执行静态块----即静态初始化A(只1次)");
	}
	{
		System.out.println("普通构造块----A(跟着new走)");
	}
	
	public A(){
		System.out.println("创建A对象");
	}
}

class A_Father{
	static{
		System.out.println("执行静态块----即静态初始化A_Father(只1次)");
	}
	{
		System.out.println("普通构造块-----A_Father(跟着new走)");
	}
	public A_Father(){
		System.out.println("创建A_father对象");
	}
}

执行结果是:
执行静态块----即静态初始化Demo01(只1次)
执行静态块----即静态初始化A_Father(只1次)
执行静态块----即静态初始化A(只1次)
普通构造块-----A_Father(跟着new走)
创建A_father对象
普通构造块----A(跟着new走)
创建A对象
20---------------------------
普通构造块-----A_Father(跟着new走)
创建A_father对象
普通构造块----A(跟着new走)
创建A对象

记录完毕!!

java静态代码块,构造方法,构造代码块的执行先后顺序 1、执行顺序 静态代码块>构造代码块>构造方法 原因: 静态代码块(static{})在类加载的时候执行一次,是最早被执行的。 构造代码块({}内的部分)在每一次创建对象时执行,始终在构造方法前执行。 构造方法在新建对象时调用( 就是new的时候 )。 注意: 静态代码块在类加载的时候就执行,所以它的优先级高于入口main()方法。 当三种形式不止一次出现,同优先级是按照先后顺序执行。 程序代码示例: public class StaticTest { public stati 阅读详情

相关推荐

Java类加载器加载类顺序

java ClassLoader的学习   java是一门解释执行的语言,由开发人员编写好的java源文件先编译成字节码文件.class形式,然后由java虚拟机(JVM)解释执行,.class字节码文件本身是平台无关的,但是jvm却不是,为了实现所谓的一次编译,到处执行,sun提供了各个平台的JVM实现–也是说jvm不是跨平台的,编译好的字节码文件被放在不同的操作系统平台上的jvm所解释执行,这个章节主要解释一下JVM装载类的机制   1.ClassLoader是什么?   一个类如果要被JVM所调度执行,必须先把这个类加载到JVM内存里,java.lang下有个很重要的类ClassL

从类加载的角度看static、main、构造方法的执行顺序

首先先放上我们写的一个.Java文件的前世今生。 现在上代码,查看static,main,构造方法的执行顺序 public class ClassA { // 定义静态变量 public static ClassA classa = new ClassA(); static { System.out.println("ClassA的静态...

子与余语墨的博客 755

从学生项目到工程实践:手把手教你用ATE测试电源芯片的Rdson与漏电流

本文详细介绍了如何将学术级的电源芯片测试方案转化为工业级解决方案,重点讲解使用ATE设备测试Rdson(导通电阻)和漏电流的关键技术。从设备选型、测试夹具设计到量产环境下的工程化实现,提供了实用的优化技巧和常见问题解决方案,帮助工程师提升测试效率和精度。

weixin_42525289的博客 180

JAVA中静态方法、非静态方法和构造方法的类加载顺序(单独类加载和继承类加载)

一、单独类加载顺序 静态代码块最先加载,加载顺序和代码出现顺序有关,从上到下依次执行 非静态代码块加载,加载顺序和代码出现顺序有关,从上到下依次执行 构造方法 一般方法,加载顺序跟调用顺序有关 父类静态代码块 -> 父类非静态代码块 -> 父类构造方法 -> 父类一般方法 示例代码: public class A { //静态代码块1 static { System.out.println("父类静态代码块1"); } //静态代

qq_39234967的博客 2595

转录组测序(RNA-seq)的数据如何分析?

经过富集分析后,我们就可以从富集到的GO term或者Pathway中寻找关键基因,通过一个GO term和Pathway里面的基因往往小于100个,至此我们就又将上千条基因的范围缩小到了100条以内。对GO term或者Pathway里面的基因进行范围的缩小也有两个方法,一种方法是根据基因的注释或者文献来找到GO term或者Pathway里面的关键基因(2-3个),另一种方法需要有相应的表型数据,与GO term或者Pathway里面基因进行相关性分析,找出与表型高度相关的基因。

weixin_55372631的博客 1万+

不用编码器也能玩转BLDC?手把手教你反电动势定位实战

本文详细介绍了无刷直流电机(BLDC)的无传感器控制方案——反电动势定位法,通过STM32实战演示如何实现基本控制。文章涵盖核心原理、硬件准备、信号采集技巧及代码实现,特别适合静音风扇、小型机器人等对成本敏感的应用场景,帮助开发者降低硬件成本并提升系统可靠性。

lg888的博客 897

Java中类及方法的加载顺序

1. 虚拟机在首次加载Java类时,会对静态代码块、静态成员变量、静态方法进行一次初始化(静态间按顺序执行)。 2. 只有在调用new方法时才会创建类的实例。 3. 类实例创建过程:父子继承关系,先父类再子类。父类的静态->子类的静态->父类的初始化块->父类的构造方法->子类的初始化块->子类的构造方法 4. 类实例销毁时候:首先销毁子类部分,再销毁父类部分。 例: package e

hellorichen的专栏 1万+

Qt (高仿Visio)流程图组件开发(一) 效果展示及基本开发框架构思

最近因为工作原因需要使用Qt开发一个类似于Visio的流程图组件,需满足基本的流程图功能,图元类型可自定义扩展,不同图元存有各类自定义数据,可以保存为xml文件,可以读取xml文件生成流程图等等。

qq_43793182的博客 1万+

【java】类的加载和对象的构造(实例化)过程及顺序

1.类的加载 1.1 什么类的加载load?(Node类的加载) 答.从硬盘上找到Node.class,解析该文件内容,生成Node类,把Node类的信息存放在内存的方法区 1.2 什么情况下回触发类的加载?并且该类不在内存中 (1)按需加载(懒加载过程) a.实例化该类的一个对象 new Node(1); b.使用类的静态属性或者静态方法 Ma...

qq_43669007的博客 528

解决:Solving environment: failed CondaValueError: Malformed version string ‘~‘: invalid character(s).

解决:Solving environment: failed CondaValueError: Malformed version string '~': invalid character(s).

晚风微凉的博客 1万+

AUTOSAR内存篇 -内存驱动(Mem)

Mem驱动程序的task是基于底层内存设备技术的物理分段的低级内存访问。Mem驱动程序的API与内存设备技术无关,因此向存储器访问模块上层提供了与存储器设备无关的接口。所有高级功能(如跨段操作)都由内存访问模块处理,以尽可能降低Mem驱动器的复杂性和占用空间。Mem驱动API命名、类型定义和文件命名规则都遵循标准的AUTUSAR BSW模块实现。服务Mem_Init初始化Mem驱动的内部状态,并设置Mem驱动Job处理状态到MEM_JOB_OK。

IOT2017的博客 712

Java类加载顺序

引言 在日常工作中,比较少的机会会探究类加载机制,类加载顺序,但是这部分在代码优化,深入学习jvm有着极大的帮助,本文帮助不太了解类加载顺序的人从代码层级了解类加载顺序。 示例1-普通类 class Foo{ private int x; { System.out.println("1"); } static { System.out...

New_Yao的博客 2558

Python 3.13.7 (64-bit)安装弹窗提示:Setup failed:0x80070643 - 安装时发生严重错误...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2109

scala之类加载 and 初始化顺序(构造器)

scala之-类加载 and 初始化顺序(与java对比)babe!~ 1 scala的对象加载顺序 1、首先通过类加载器加载类信息。 2、初始化成员(属性、方法及其变量) 3、通过主构造器进行初始化 4、通过辅助构造器进行初始化 5、给接收的变量分配内存地址 2 声明子类对象时构造器的加载顺序 2.1 Java 在Java中,声明子类对象时,子类的所有的构造器(包括有餐、午餐构造器)、会隐式或者显式的调用父类的无参构造器super() package com.shufang.facetoobject

shufangreal的博客 2018

链接文件及功能安全:S32K3如何将FLASH驱动放到RAM里面、RAM如何实现软件复位数据不丢失操作。

在通过RTD的SDK也好MCAL也好,始终存在一个问题,生成的代码除了看门狗模块,默认都是放在flash里面,按照正常逻辑来看没啥大的问题,思考一个问题:Flash放在0x100的位置,但是此时我们要操作0x100怎么办?那肯定不允许啊,但是将flash的驱动放在RAM里面就可以避免这个问题的产生。Flash的特性:PF0能操作PF1,当然PF1也能操作PF0的,以此类推,只要不操作自身,想怎么玩都可以。这也是一个物理特性吧。

梦想技术家 2310

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java中类加载的执行顺序

一、Java中的类加载demo顶层基类Base.java:public class Base { public static int a = 10; public int b = 20; static { System.out.println("----Base---: Static Init Base " + a); // Syste

Just do it 9360

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java 类加载顺序:从混沌到有序的奇幻旅程

看完这篇博客,你是不是觉得 Java 类加载顺序没那么高深莫测了?从静态到实例化,从父类到子类,JVM 就像个一丝不苟的导演,把每个环节安排得明明白白。带着这张“加载顺序地图”,下次写代码时就不会迷路啦!有什么疑问?留言告诉我,咱们一起聊聊~

小知识吖 1374

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

类加载顺序

类加载顺序 静态变量 静态代码块 父子类

一张小羊毛的博客 1737

Java类加载顺序之一条日志引发的血案

一条日志引发的案子 [11:12:58.505][D][Gensee][RTLive][getIns ins = 4414717] [11:12:58.774][I][Gensee][null][updateShowMode] [11:12:58.864][D][Gensee][VideoCameraCapture][setOrientation ortation = 1] [11:12:58.865][D][Gensee][VideoCapture][setOrientation ortation =

主要记录一些问题处理记录,部分是作为知识库使用 1万+

类加载过程 静态代码块、构造函数、构造代码块执行顺序

本文预计解决两个误区: 加载和类加载的关系 类加载和类实例化的关系 昨天终于纠正了我多年的误区:类加载的时候会加载静态和成员资源。所以如下输出都是类加载的时候输出的。 public static void main(String[] args) { /** * percent 静态代码块 * child 静态代码块 * percent 构造代码块 ...

qq_38159458的博客 5037

关于静态代码块,构造方法,构造代码块的执行先后顺序

总结一下: 1.执行顺序:静态代码块>构造代码块>构造方法 理由:静态代码块(static{})在类加载的时候执行一次。 构造代码块({}内的部分)在每一次创建对象时执行,始终在构造方法前执行。 构造方法在新建对象时调用( 就是new的时候 )。 注意: a.静态代码块在类加载的时候就执行,所以它的优先级高于入口main()方法。 b.当三种形式不止一次出现,同优先级是按照先后顺序执行。 来看一道题巩固一下: public class B { public static B t1 = n

qq_42678668的博客 2862

Java 类加载时机及顺序

java 类加载时机及顺序 1. 类加载时机 当发生如下情况时,java的类加载器会将类加载到内存中: 当new一个类时,即新建一个类; 调用累的静态方法、读取静态变量、或设置静态变量时; 当使用反射调用一个类时; 初始化一个子类时,如果其父类未初始化,则需要先初始化其父类; 程序运行时需要指定一个主类,即main方法所在的类,虚拟机会优先初始化这个类; jdk7动态语言所支持的一些情况; 当发生如上情况时,系统会将类加载到内存中; 2. 类加载顺序 类加载顺序如下: 父类的静态字段和父类的静态代码块

qq_38866090的博客 1360
上一篇: jdk1.8的新特性之--Rhion变为Nashorn
下一篇: 关于手写helloworld中带package和不带package,用java命令运行的区别
hmh_java_life
博客等级 码龄7年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值