通过类加载和初始化的一些题目理解Java类加载过程
通过题目重点理解:Class加载流程和运行时区域
目录
- 子类和父类static变量
- 父子类加载顺序2
- class.forName初始化
子类和父类static变量
class Parent {static int a = 1;static int b = 2;static int c;static {c = 3;System.out.println("parent static block");}public String name;{name = "parentName";System.out.println("parent nonStatic code");}public Parent() {System.out.println("Parent()");}public Parent(String name) {this.name = name;System.out.println("Parent(String)");}
}class Son extends Parent {static int a;static int b = 3;public String name;static {System.out.println("son static block");}{System.out.println("son nonStatic code");}public Son() {System.out.println("Son()");}public Son(String name) {super(name);this.name = name;System.out.println("Son(String)");}public String getName() {return name;}public void setName(String name) {this.name = name;}
}public class Main {public static void main(String[] args) {Son son = new Son();System.out.println(son.getName());}}
/*
parent static block
son static block
parent nonStatic code
Parent()
son nonStatic code
Son()
null*/
不用可以被,理解class加载流程即可:https://blog.csdn.net/qq_26437925/article/details/145503360
- 实例化会触发类
初始化,子类初始化必须先初始化父类;类初始化只会执行一次
所以
parent static block
son static block
- 子类实例化,默认调用父类的
无参构造函数;非静态代码块,构造函数都是实例化的事情;非静态代码块在构造函数前初始化类实例信息用的;
所以
parent nonStatic code
Parent()
son nonStatic code
Son(String)
- 最后输出数据是null
父子类加载顺序2
上面例子使用不同构造函数
class Parent {static int a = 1;static int b = 2;static int c;static {c = 3;System.out.println("parent static block");}public String name;{name = "parentName";System.out.println("parent nonStatic code");}public Parent() {System.out.println("Parent()");}public Parent(String name) {this.name = name;System.out.println("Parent(String)");}
}class Son extends Parent {static int a;static int b = 3;public String name;static {System.out.println("son static block");}{System.out.println("son nonStatic code");}public Son() {System.out.println("Son()");}public Son(String name) {super(name);this.name = name;System.out.println("Son(String)");}public String getName() {return name;}public void setName(String name) {this.name = name;}
}public class Main {public static void main(String[] args) {Son son = new Son();System.out.println(son.getName());System.out.println("-----");Son son1 = new Son("son1");System.out.println(son1.getName());}}
/*
parent static block
son static block
parent nonStatic code
Parent()
son nonStatic code
Son()
null
-----
parent nonStatic code
Parent(String)
son nonStatic code
Son(String)
son1*/
class.forName初始化
class Parent {static int a = 1;static int b = 2;static int c;static {c = 3;System.out.println("parent static block");}public String name;{name = "parentName";System.out.println("parent nonStatic code");}public Parent() {System.out.println("Parent()");}public Parent(String name) {this.name = name;System.out.println("Parent(String)");}
}class Son extends Parent {static int a;static int b = 3;public String name;static {System.out.println("son static block");}{System.out.println("son nonStatic code");}public Son() {System.out.println("Son()");}public Son(String name) {super(name);this.name = name;System.out.println("Son(String)");}public String getName() {return name;}public void setName(String name) {this.name = name;}
}public class Main {public static void main(String[] args) throws Exception{Main main = new Main();Class clazzSon = Class.forName("Son", false, main.getClass().getClassLoader());System.out.println("-----");Class clazzSon2 = Class.forName("Son", true, main.getClass().getClassLoader());}}
/*
-----
parent static block
son static block*/
- class.forName会初始化,是否静态初始化可以传递参数设置
相关文章:
通过类加载和初始化的一些题目理解Java类加载过程
通过题目重点理解:Class加载流程和运行时区域 目录 子类和父类static变量父子类加载顺序2class.forName初始化 子类和父类static变量 class Parent {static int a 1;static int b 2;static int c;static {c 3;System.out.println("parent static block&quo…...
LLMs之DeepSeek r1:TinyZero的简介、特点、安装和使用方法、案例应用Logic-RL的简介、安装和使用方法、案例应用之详细攻略
LLMs之DeepSeek r1:TinyZero的简介、特点、安装和使用方法、案例应用Logic-RL的简介、安装和使用方法、案例应用之详细攻略 目录 TinyZero的简介 1、TinyZero的特点 TinyZero的安装和使用方法 1、安装 创建 conda 环境 数据准备 (倒计时任务) 多GPU (适用于 …...
爬取豆瓣电影 Top250 数据的脚本及调整方法
以下是一个完整的 Python 脚本,用于爬取豆瓣电影 Top250 的数据,包括电影名称、评分和短评。同时,我将提供应对豆瓣页面结构更新和反爬虫机制的调整方法。 安装必要的库 首先,确保安装了必要的库: bash复制 pip install requests beautifulsoup4 pandas示例代码 Pyth…...
Deepseek 接入Word处理对话框(隐藏密钥)
硅基流动邀请码:1zNe93Cp 邀请链接:网页链接 亲测deepseek接入word,自由调用对话,看截图有兴趣的复用代码(当然也可以自己向deepseek提问,帮助你完成接入,但是提问逻辑不一样给出的答案是千差万…...
Jupyter Notebook自动保存失败等问题的解决
一、未生成配置文件 需要在命令行中,执行下面的命令自动生成配置文件 jupyter notebook --generate-config 执行后会在 C:\Users\用户名\.jupyter目录中生成文件 jupyter_notebook_config.py 二、在网页端打开Jupyter Notebook后文件保存失败;运行代码…...
基于机器学习时序库pmdarima实现时序预测
目录 一、Pmdarima实现单变量序列预测1.1 核心功能与特性1.2 技术优势对比1.3 python案例1.3.1 时间序列交叉验证1.3.1.1 滚动交叉验证1.3.1.2 滑窗交叉验证 时间序列相关参考文章: 时间序列预测算法—ARIMA 基于VARMAX模型的多变量时序数据预测 基于机器学习时序库…...
Dart语言的云计算
Dart语言在云计算中的应用 引言 云计算作为一种新兴的计算模式,为各行各业带来了重大变革。借助于云计算,用户可以通过互联网获取和使用各种资源,如计算能力、存储、数据库等。随着云计算的快速发展,编程语言的选择变得愈发重要…...
每日一题--数组中只出现一次的两个数字
数组中只出现一次的两个数字 题目描述数据范围提示 示例示例1示例2 题解解题思路位运算方法步骤: 代码实现代码解析时间与空间复杂度按位与操作获取最小位1的原理为什么选择最低有效的 1 位而不是其他位? 题目描述 一个整型数组里除了两个数字只出现一次…...
【数据】数据领域常用名词解释(第一批40个)+ 例子
导读:这些名词解释是基于数据领域的基本原理、技术方法、行业实践以及政策规范等多方面因素综合制定的,旨在为社会各界提供统一、权威的参考标准,推动数据领域的健康有序发展。 目录 数据 原始数据 数据资源 数据要素 数据产品和服务 数…...
Java | RESTful 接口规范
关注:CodingTechWork 引言 作为一名程序员,制定清晰、一致且高效的 RESTful 接口规范对于团队的开发效率和项目的长期维护至关重要。本文将详细介绍 RESTful 接口的设计理念、请求方法分类、核心规范,以及正确和错误的示例,帮助团…...
Baklib优化数字化内容管理用科技提升商业效率与增值潜力
内容概要 在当今数字化迅速发展的时代,数字化内容管理已成为企业提升竞争力的重要手段。Baklib作为一款强大的智能优化内容管理系统,通过先进的科技手段,帮助企业在内容管理和数据整合方面实现高效运作。Baklib 是什么类型的工具,…...
【AI日记】25.02.09
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 探索 探索 AI 应用 读书 书名:理解公司:产权、激励与治理作者:张维迎 律己 探索:8 小时作息:2:00-10:00短视频娱乐&am…...
Chrome浏览器原理及优化
1. 相关面试题 1.1. 请说说从输入 URL 到页面渲染完成的全过程 1. 输入URL,用户在浏览器的地址栏输入一个URL,并按下回车键; 2. DNS解析; 浏览器需要将域名转换为服务器的IP地址,以建立连接。 (1). 如果浏览器缓存、操作系统缓存或路由器缓存中已有该域名的IP地址,…...
2025_2_9 C语言中队列
1.队列(先进先出) 队列也是一种受限制的线性结构 它只能在一端添加元素,在另一端访问,删除元素 (队首插入,队尾删除) 因为链表实现没有数组实现快,所以队列大多数是用数组实现的 q…...
[图文]DeepSeek能做对《软件方法》的测试题吗?
目前为止,我已经针对《软件方法》涉及的知识点出了几百道选择题,我们来看一下DeepSeek能不能做对这些题。 在选择题目时,我刻意向后兼容,选择只要受过严谨的软件开发方法学训练,即使没听说过《软件方法》也应该能通过…...
推荐个Deepseek网站
这几天有用到Deepseek,但是官网老时崩溃,硅基流动这个网站感觉还可以用,赠送了十多块钱,用完要收费,但比较便宜,可以接受。 https://siliconflow.cn/zh-cn/models 这里可以设置给模型添加固定的标签需求...
【Linux开发工具】C/C++ 在Linux下的编译器-gcc/g++
目录 一、前言 二、gcc/g的使用 三、程序翻译的四个阶段 1.预处理 2.编译 3.汇编 4.链接 四、动静态库 1.库函数的命名和分类 2. 动静态库的区别 一、前言 学习了vim的使用方法后,我们就可以高效编辑文本文件了,但vim并不像vs一样编辑好.c文件…...
hmi界面:工业设计风格如何识别,有什么应用场景。
一、工业设计风格在 HMI 界面中的视觉特征 (一)简洁的布局 功能分区明确 工业设计风格的 HMI 界面往往将不同的功能模块进行清晰的分区,每个区域都有明确的用途。例如,操作区、显示区、状态区等划分一目了然,用户可以…...
NIO三大组件
文章目录 概述Channel & BufferSelector服务器设计历史演化多线程版设计线程池版设计selector 版设计 概述 NIO的意思是 non-blocking io 非阻塞 IO 。NIO中存在3大组件:Channel 、 Buffer 、Selector Channel & Buffer channel (中文 管道的…...
pytest.fixture
pytest.fixture 是 pytest 测试框架中的一个非常强大的功能,它允许你在测试函数运行前后执行一些设置或清理代码。以下是关于 pytest.fixture 的详细介绍: 一、定义与用途 pytest.fixture 是一个装饰器,用于标记一个函数为 fixture。Fixture 函数中的代码可以在测试函数运…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
