【Java类与对象】类中功能体的执行顺序

深刻理解java中new一个对象的执行过程及类的加载顺序 深刻理解java中new一个对象的执行过程及类的加载顺序 构造函数 public HelloA(){//构造函数 } 关于构造函数,以下几点要注意: 1.对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的。 2.构造函数的作用是用于给对象进行初始化。 3.一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次。 构造代码块 {//构造代码块 } 关于构造代码块,以下几点要注意: 构造代码块的作用是给对象进行初始化。 对象一建立就运行构造代 阅读详情

原则:
1、父类优先于子类进行初始化;
2、变量优先于方法进行初始化;
3、静态优(对象或变量)先于非静态,而静态只初始化一次;

实验:方法和变量的执行顺序

结论:
  不论变量放在哪儿,都会先于任意一个方法的执行前执行(包括构造方法),而构造方法是一个类必须会执行的方法,不需要显示的进行调用。同时,不论变量在哪儿分布,只要在方法外部,就一定先于方法初始化。

public class Main {
	
	public Main(int n) {
		System.out.println("Main类构造函数执行!" + "第" + n + "个");
	}
	
	public static void main(String[] args) { 
		Test t = new Test();
	}
}

class Test {
	Main m1 = new Main(1); //类变量总是比方法先执行
	public Test() {
		System.out.println("Test类构造函数执行!");
		Main m2 = new Main(2); //方法中构造方法先执行;
	}
	
	Main m3 = new Main(3); //不管类变量在哪里,都是类变量比方法先执行;
}

/*输出:
	Main类构造函数执行!第1个
	Main类构造函数执行!第3个
	Test类构造函数执行!
	Main类构造函数执行!第2个
*/

实验:static块和非static块

结论:
  静态块是在类的装载时执行的(装入.class文件后), 且只执行一次。而非静态块是在调用构造方法之前执行的,每生成一个实例对象,就会调用一次非静态块。

public class Main {
	//静态块(static块)
	static {
		System.out.println("静态块!");
	}
	
	//非静态块
	{
		System.out.println("非静态块!");
	}
	
	public Main(int n) {
		System.out.println("构造函数!" + "第" + n + "次");
	}

	public static void main(String args[]) {
		Main m1 = new Main(1);
		Main m2 = new Main(2);
	}
}
/*输出:
 * 静态块!
非静态块!
构造函数!第1次
非静态块!
构造函数!第2次
*/

Java类中的数据体执行顺序

1、先装载.class文件,创建Class对象,对静态数据(由static声明的)进行初始化,而且只进行一次初始化。
2、关键词”new”出对象,在堆上进行空间分配。
3、执行非静态块。
4、执行所有方法外定义的变量的初始化。
5、执行构造器。
即:静态块,静态属性->非静态块,属性->构造器
注:对于静态块和静态属性或者非静态块和属性,初始化顺序决定于它们在代码中的顺序(在前就先执行)。

public class Main {
	static {
		System.out.println("静态块!"); //加载class文件时执行,仅执行一次;
	}
	
	{
		System.out.println("非静态块!"); //每次new时执行;
	}
	
	Test t1 = new Test(1);
	
	public Main() {
		System.out.println("Main类构造函数!");
		Test t2 = new Test(2);
	}
	
	Test t3 = new Test(3);
	
	public static void main(String args[]) {
		Main m = new Main();
	}
}

class Test {
	public Test(int n) {
		System.out.println("构造函数!" + "第" + n + "次");
	}
}

/*输出:
静态块!
非静态块!
构造函数!第1次
构造函数!第3次
Main类构造函数!
构造函数!第2次
*/

总结:加载顺序

1) 父类(静态变量、静态语句块)
2) 子类(静态变量、静态语句块)
3) 父类(实例变量、普通语句块)
4) 父类(构造函数)
5) 子类(实例变量、普通语句块)
6) 子类(构造函数)

class BaseMain {
	//父类代码块
	static {
		System.out.println("父类的static代码块,已执行!");
	}
	//父类非静态代码块
	{
		System.out.println("父类非静态代码块,已执行!");
	}
	
	//构造器
	public BaseMain() {
		System.out.println("父类构建器,已执行!");
	}
}

public class Main extends BaseMain {
	
	// 子类static代码块
	static {
		System.out.println("子类static代码块,已执行!");
	}
	// 子类非static代码块
	{
		System.out.println("子类非static代码块,已执行!");
	}
	// 子类构造器
	public Main() {
		System.out.println("子类构造器,已执行!");
	}
	
	// 程序入口
	public static void main(String args[]) {
		new Main();
	}
}

/* 输出:
父类的static代码块,已执行!
子类static代码块,已执行!
父类非静态代码块,已执行!
父类构建器,已执行!
子类非static代码块,已执行!
子类构造器,已执行!
*/
从ViT到CLIP:OpenAI如何用4亿张图‘教会’AI看懂世界?一次讲透对比学习与Prompt工程 本文深入解析OpenAI的CLIP模型如何通过4亿图文对的对比学习实现跨模态理解,详细探讨了对比学习、数据构建、模型架构及Prompt工程等核心技术。CLIP利用Transformer架构和精心设计的Prompt模板,在Zero-Shot分类、图像检索等场景展现出强大能力,为多模态AI应用开辟新方向。 阅读详情

相关推荐

SAP FB03凭证修改实战:巧用BAPI FI_DOCUMENT_CHANGE更新抬头与行项目

本文详细介绍了SAP FB03凭证修改的实战技巧,重点解析了BAPI FI_DOCUMENT_CHANGE的使用方法。通过该接口,用户可以在不冲销原凭证的情况下直接更新抬头文本(BKTXT)和行项目文本(SGTXT),确保凭证编号连续且符合审计要求。文章包含核心机制解析、完整实现步骤、错误处理方案以及高级应用场景,帮助开发者高效完成SAP财务凭证修改。

weixin_29251567的博客 423

java中方法的执行顺序

构造函数:构造函数有名称,与类名相同,可以有参数列表,用于接受初始化参数。构造函数的参数列表和方法参数一样,可以有零个或多个参数。构造代码块:构造代码块没有名称,它位于类中,使用一对花括号 {} 包裹起来,并且没有参数列表。构造代码块不接受任何参数。构造函数:需要显式调用以创建对象。构造函数的调用通常由 new 关键字触发。构造代码块:在创建对象时自动执行,不需要显式调用。

帆的博客 518

Windows MCP 安装教程:让 AI 代理与 Windows 系统无缝交互

通过以上步骤,你已经成功安装和配置了 Windows MCP 服务。现在你的 Cursor 编辑器可以通过 MCP 协议与 Windows 系统进行深度交互,AI 代理能够:启动和控制应用程序执行系统命令自动化 UI 操作获取系统状态信息这为 AI 辅助开发和工作流程自动化提供了强大的基础。如果你在使用过程中遇到任何问题,欢迎在评论区讨论或查看项目的官方文档。

chenchihwen的专栏 3350

类的执行顺序

1、静态优先 2、父类优先 3、非静态块优先于构造函数 执行顺序: 父类静态块 子类静态块 父类非静态块 父类构造方法 子类非静态块 子类构造方法

Bald_Creator的博客 438

CloudCompare横截面工具实战:从点云切片到轮廓提取的完整流程

本文详细介绍了CloudCompare软件中Cross Section工具的核心功能与实战流程。从交互式裁剪框的精准操控,到包络线提取的参数设置与优化,再到内部轮廓提取及批量处理技巧,完整解析了如何从三维点云中高效提取建筑立面、隧道断面等关键轮廓信息,是点云数据处理与分析的实用指南。

weixin_29290963的博客 284

计算机网络之NAT的解释与实验配置

NAT 静态NAT 动态NAT easy_ip NAT服务器映射

爱学习的JackYang的博客 1916

java中的类的执行顺序问题

/* * java的执行顺序 */ public class A extends B{ static{ System.out.println("a"); } public A(){ super();//可以显示或者隐士调用 System.out.println("b"); } public static void main(String[] args) { A a

猪猪侠 556

机器人手眼标定快速精度验证方法

机器人手眼标定快速精度验证方法

laoli_的博客 1万+

类加载时类中元素执行的顺序

java中类中元素的执行顺序一直是一个初学者容易出错和不理解的地方 下面我们用一个例子来体会类中元素执行时 需要遵循那些原则 一个类加载 从上往下 先执行静态的赋值语句或静态初始化块 遇到new的时候 从上往下 执行非静态的赋值语句或初始化块 最后 在执行构造函数 ...

北冥的博客 473

解决VMWare ESXi PCIe直通显卡导致的DevicePowerOn启动故障

本文详细解析了VMWare ESXi中PCIe直通显卡导致的DevicePowerOn启动故障,重点分析了MMIO空间不足的根本原因,并提供了完整的解决方案。通过修改.vmx文件中的关键参数,如pciPassthru.64bitMMIOSizeGB,可以有效解决显存分配问题。文章还涵盖了硬件兼容性检查、性能调优技巧及大规模部署的实战案例,帮助用户彻底解决显卡直通难题。

weixin_42537919的博客 574

Python主要智能优化算法库汇总

最近几年简单浏览和对比了一些智能算法的库。现将各种库的主要信息、相关优缺点简单整理如下,各位同学可根据自己的需求和喜好进行选择。 文章目录1、DEAP2、mealpy3、scikit-opt (国产良心)4、Geat2(国产用心)5、pygmo26、pyswarms7、SciPy(想不到吧)小结 1、DEAP 项目地址:https://github.com/DEAP/deap 安装: pip install deap 优点: 起点高,发表在Journal of Machine Learning Rese

半个冯博士 2万+

【转载】类的执行顺序

原文地址:http://zangweiren.iteye.com/blog/208122 作者:臧圩人 网址:http://zangweiren.iteye.com 大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结...

重复 192

ESP32 DMX512与RDM协议栈开发指南

DMX512-A是专业灯光控制领域广泛采用的串行通信标准,基于RS-485物理层实现确定性单向数据传输;RDM(Remote Device Management)则在其基础上扩展双向、可寻址、可配置的智能管理能力,满足现代舞台设备远程固件升级、自动发现与参数配置需求。二者共用同一总线但时序与帧结构严格隔离,对硬件定时精度、中断响应延迟及电气隔离提出极高要求。在嵌入式实践中,ESP32凭借Wi-Fi/蓝牙连接能力与丰富外设资源,成为构建低成本智能DMX节点的理想平台。esp_dmx协议栈正是面向该场景的高性能

weixin_34945060的博客 316

Java类与对象

此文章为大家全方位的讲解了什么是Java的类与对象,从类与对象是什么到类与对象如何创建如何实例化以及使用。并且为大家介绍了类的成员有成员变量、成员方法。如何实现private的封装以及如何使用getter和setter方法还有我们的构造方法和代码块,最后最后在文章的结尾教给了大家如何通过电脑自己实现自己生成private的封装,setter和getter的定义以及toSring的定义方法。

xinhang10的博客 4369

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

visio安装包

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

Java类执行顺序

一、先来了解几个概念 1、静态代码块 (1)格式 在java类中,使用static关键字和{}声明的代码块 public class CodeBlock { static{ System.out.println("静态代码块"); } } (2)执行时机 静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。 如果一个类中有多个静态代码块,会按照书写顺序依次执行。后面在比较的时候会通过具体实例来证明。 (3)静态代码块的作用 一般情

sinat_34863938的博客 3452

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java:类中代码的执行顺序

引言对于Java的初学者而言,很多时候我们只知道如何写一些基础的代码,但是却不知道为什么,对于一些概念而言,更是停留在一个很模糊的概念上,其实这样是不好的一种学习习惯。所以对于不太清楚的一些概念,自己多敲一敲,或许能更好的掌握。问题今天要说的问题是,Java中代码的执行顺序,不知道叫这个题目合适不。这里先定义几个类别: 构造方法(如:public className(){……}) 静态代码块(如:s

不悔的青春 1万+

Java类的执行顺序(详解)

在Java中,类的执行顺序主要包括静态变量、静态代码块、实例变量、实例代码块、构造方法等的执行顺序。

qq_62087896的博客 2397

java类中代码执行顺序

java类中代码执行顺序           首先,没有学java或者不知道类继承的,可以不用浪费时间乐,直接左上角,看多了有害。           java的代码执行顺序是自上而下,从左到右,方法是以main方法为主方法(通常情况下,事实上很多时候也会不用主方法)。但是就像HTML中CSS有执行先后顺序一样,java中类的内容也是有先后执行顺序的。java中类的组成结构有...

huangxin2015的博客 1万+

Java中类的执行顺序

java中类里面的加载顺序,对于静态资源和非静态资源的执行顺序,以及静态代码块,非静态代码块,以及构造函数的执行顺序,看了这篇博客你会有一个深入的了解。

qq_45830276的博客 1444

【Java】父子类执行代码顺序

执行顺序 父类静态代码块–>子类静态代码块–>父类代码块–>父类构造方法–>子类代码块–>子类构造方法 代码 //父类 public class Test1 { public Test1(){ System.out.println("父类构造方法"); } static{ System.out.println("父类静态代码块"); } { System.out.println(

瑞新の博客:bennyrhys 2334

Java面试中经常遇到的类执行顺序

记得以前面试的时候,会直接给一段代码,这段代码很多地方都有print,所以让我写出现打印出什么,后打印出什么。今天我整理一下单类的情况,继承的情况和一些特殊情况,希望大家看了之后,在面试过程中举一反三,成功规避错误。笔者目前整理的一些blog针对面试都是超高频出现的。大家可以点击链接:http://blog.youkuaiyun.com/u012403290

brickworkers的博客 2691

java父子类执行顺序

1.Parent 父类: public class Parent { static { System.out.println("我是父类静态代码块!"); } { System.out.println("我是父类非静态代码块!"); } static void static_method() { Sys...

qq_45394274的博客 1028

java对象初始化的执行顺序

java对象初始化的执行顺序 创建:2020/4/8 修改:2020/4/10 java环境: jdk11 package muyu; public class A { static String sts = print("静态属性"); // 1 private String s = print("属性"); // 2 static { print("静态初始化块"); } // 1 { print("初始化块")...

深蓝旭的博客 872

JAVA类的执行顺序

最近学习JAVA基础。刚好舍友给发来一道题,关于JAVA类的执行顺序 public class test1 { {System.out.println("1");} static {System.out.println("5");} public test1(){ System.out.println("2"); } public test1...

天天吞吞吐吐跳跳糖 798

java中类的加载,及执行顺序

java中类的加载,及执行顺序 类的加载顺序  什么时候类加载  第一次需要使用类信息时加载。  类加载的原则:延迟加载,能不加载就不加载。  触发类加载的几种情况:  (1)、调用静态成员时,会加载静态成员真正所在的类及其父类。  通过子类调用父类的静态成员时,只会加载父类而不会加载子类。  (2)、第一次 new 对象的时候 加载(第二次再 new 同一个类时,

Enjoy life,Enjoy coding!! 3608
上一篇: 【JavaSE基础】如何选择Eclipse或IntelliJ IDEA
下一篇: 【Java类与对象】Object类的简单认识
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值