当前位置: 首页 > news >正文

Java之初始化顺序实践

功能概述

  • 在创建Java对象时,需要将对象中的成员变量进行初始化后,才能调用对象的构造方法创建对象。本文中将会讲解初始化时父类与子类对应的顺序。

功能实践

场景1:父类、子类的初始化顺序

用例代码

@Test
public void test_init_order() {new Child();
}public class Parent {static {System.out.println("父类静态块");}{System.out.println("父类非静态块");}public Parent() {System.out.println("父类构造方法");}
}public class Child extends Parent {static {System.out.println("子类静态块");}{System.out.println("子类非静态块");}public Child() {System.out.println("子类构造方法");}
}

结果输出

父类静态块
子类静态块
父类非静态块
父类构造方法
子类非静态块
子类构造方法

结果分析

  • 先初始化静态块:父类的静态块 -> 子类的静态块。
  • 再初始化非静态块以及构造方法:
    • 父类的非静态块 -> 父类的构造方法
    • 子类的非静态块 -> 子类的构造方法

场景2:块、成员域中初始化顺序

用例代码

static {a = 2;} //静态块中初始化
static int a = 1; //成员域中初始化
static int b = 3;static {b = 4;}{c = 5;} //可以放在声明的上面
int c = 3;@Test
public void test_order() {System.out.println(a);System.out.println(b);System.out.println(c);
}

结果输出

1
4
3

结果分析

  • 块中的初始化与成员域中的初始化是平级的,所以会按照从上到下初始化,最后一次初始化为最终的值。

场景3:静态变量的调用

用例代码

@Test
public void test_static_var() {System.out.println(InitB.c);
}public class InitA {public static String c = "C";static {System.out.println("A");}
}public class InitB extends InitA {static {System.out.println("B");}
}

用例输出

A
C

结果分析

  • 因为调用InitB.c,static变量c在A类中,所以会加载父类A,所以输出了静态块中的"A"。
  • 因为InitB.c直接访问InitA的变量,不需要访问InitB中的其它内容,所以就不要加载InitB了。

功能总结

  • 初始化时,执行的顺序为:父类静态变量 -> 父类静态代码块 -> 子类静态变量 -> 子类静态代码块 -> 父类非静态变量 -> 父类非静态代码块 -> 父类构造方法 -> 子类非静态变量 -> 子类的非静态代码块 -> 子类构造方法。

相关文章:

Java之初始化顺序实践

功能概述 在创建Java对象时,需要将对象中的成员变量进行初始化后,才能调用对象的构造方法创建对象。本文中将会讲解初始化时父类与子类对应的顺序。 功能实践 场景1:父类、子类的初始化顺序 用例代码 Test public void test_init_order(…...

静态库与动态链接库,第三方库集成到VS

目录 介绍静态库与动态链接库静态库动态链接库 如何将第三方库集成到VS上VS属性管理器配置静态库配置动态链接库属性管理器其他的内容MKL库的安装boost库的安装 介绍 众所周知,.c文件或者.cpp文件变成.exe文件需要经历四个过程 分别是预处理,编译&#…...

生态经济学领域里的R语言机器学(数据的收集与清洗、综合建模评价、数据的分析与可视化、数据的空间效应、因果推断等)

近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一,目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据&#xf…...

【ROS】自定义消息方面的bug总结(1)

根据需要创建功能包 一类引用ros库函数的一类是自己定义的消息类型 库函数中有的可以直接在创建功能包的时候添加依赖,也可以在CMakeLists.txt中手动添加 catkin_create_pkg crepes roscpp rospy std_msgs nav_msgs sensor_msgs geometry_msgs创建文件夹msg&#xf…...

CTF-XXE(持续更新,欢迎分享更多相关知识点的题目)

知识 实例 BUU [PHP]XXE 进来看到 然后一起看 Write BUU XXE COURSE 1 进来看到 一起看 write NSS [NCTF2019]Fake XML cookbook 反正是XXE 直接整 write [NCTF 2019]True XML cookbook 不整花里胡哨,解题在最下面 write 与博主不同,我通过…...

Python工具箱系列(四十一)

使用zip批量压缩文件 前文的代码示例了使用gzip对单个文件进行压缩。本文示例使用更通用的zipfile来批量压缩文件。zipfile也是python内置的库,使用起来非常方便。废话不说,直接上代码示例。 import dbm import glob import zipfile# 保存压缩计划的库名…...

Bigemap在路桥行业是怎么应用的?

选择Bigemap的原因: 奥维下架了,后来了解到的bigemap,于是测试了这款软件 使用场景: 下载影像、矢量路网做前期策划,下载完数据后导出cad ,做一些标注,最终出图下载等高线,作为前期选址依据 …...

代码随想录算法训练营Day48 || ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

问题1:198. 打家劫舍 - 力扣(LeetCode) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上…...

高通面临难题,Oryon核心存在问题,高通8cx Gen 4芯片将推迟发布

"高通公司面临难题,可能会导致骁龙8cx Gen 4的发布时间推迟",关于骁龙8cx Gen 4处理器,还有一些其他值得关注的特点和功能。首先,据悉,骁龙8cx Gen 4采用了高通自家研发的Oryon核心架构,这是一项…...

安卓手机如何使用邮箱客户端收发邮件

安卓手机品牌较多,设置界面都不太相同,部分手机常见的如vivo、小米手机都是直接填写邮箱用户名和密码,软件自动设置,即可登录邮箱,其他安卓手机或者第三方安卓手机软件有时候需要手动设置,此处以安卓手机的…...

对java中的List进行深拷贝,并进行删除测试

List<String> list new ArrayList<>(); // 需要拷贝的原始List list.add("aaa"); list.add("bbb"); list.add("ccc"); List<String> listNew new ArrayList<>(); // 新List // 将原始List的值赋值给新List Co…...

springboot服务注册到Eureka,端口总是默认8080,自己配置端口不生效

这段时间接手了一个公司的老项目&#xff0c;用的是SpringCloud&#xff0c;在我用的时候突然发现有一个服务&#xff0c;注册到Eureka后&#xff0c;界面显示的端口和实际Ribbon调用的实例端口是不一致的&#xff0c;后来我自己写了个端口获取了一下所有的实例信息&#xff0c…...

LeetCode第11~15题解

CONTENTS LeetCode 11. 盛最多水的容器&#xff08;中等&#xff09;LeetCode 12. 整数转罗马数字&#xff08;中等&#xff09;LeetCode 13. 罗马数字转整数&#xff08;简单&#xff09; LeetCode 11. 盛最多水的容器&#xff08;中等&#xff09; 【题目描述】 给定一个长…...

如何编译打包OpenSSH 9.4并实现批量升级

1 介绍 openssh 9.4版本已于8月10号发布&#xff0c;安全团队又催着要赶紧升级环境里的ssh版本&#xff0c;本文主要介绍Centos5、Centos6、Centos7下openssh 9.4源码编译rpm包以及批量升级服务器openssh版本的方法。关注公众号后台回复ssh可获取本文相关源码文件。 https://w…...

AcWing 898. 数字三角形 (每日一题)

大家好 我是寸铁 希望这篇题解对你有用&#xff0c;麻烦动动手指点个赞或关注&#xff0c;感谢您的关注 注意 像数组下标出现i-1的&#xff0c;在循环的时候从i1开始。 关于0x3f3f3f3f和Integer.MAX_VALUE 0x3f3f3f3f:1061109567 Integer.MAX_VALUE:2147483647 在选用Integ…...

深度学习中,batchsize的大小对训练结果有什么影响,如何正确使用

一、影响&#xff1a; Batch size在深度学习训练中起着非常重要的作用&#xff0c;它对训练速度、模型性能、以及模型的泛化能力都有影响。以下是一些主要的影响&#xff1a; 训练速度&#xff1a;较大的batch size可以更充分地利用硬件并行性&#xff0c;从而加快单个epoch的…...

Squaretest 1.8.3 安装激活

1. 插件下载 2. 离线安装 3. 插件激活...

P21~22 第六章 储能元件——电容存储电场能,电感存储磁场能

1、电容元件 a定义 b线性时不变电容元件 c电容的电压与电流关系 i有限则u有限 注意理解面积 d电容的功率和储能 e例一 跃变就是指物体的物理量从有限值变为无限值的过程。 分析上图例题&#xff1a;对于电源波形要吃负无穷到正无穷去刻画。即时间轴要铺满。 有有图控制电…...

常见API架构介绍

常见API架构介绍 两个服务间进行接口调用&#xff0c;通过调用API的形式进行交互&#xff0c;这是常见CS架构实现的模式&#xff0c;客户端通过调用API即可使用服务端提供的服务。相较于SPI这种模式&#xff0c;就是服务端只规定服务接口&#xff0c;但具体实现交由第三方或者自…...

Vue全局组件与局部组件(详解)

当使用 Vue.js 构建应用时&#xff0c;组件是其核心概念之一。Vue 组件允许你将用户界面分割成独立、可复用的部分。这里我会更详细地解释 Vue 的全局组件和局部组件&#xff0c;包括它们的定义、使用方式以及适用场景。 Vue 全局组件&#xff1a; 全局组件是在整个 Vue 应用…...

4个QtScrcpy键鼠映射技巧实现手游操控精准化

4个QtScrcpy键鼠映射技巧实现手游操控精准化 【免费下载链接】QtScrcpy Android实时投屏软件&#xff0c;此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy 手游操控一直是移…...

Android Perfetto 系列 6:为什么是 120Hz?高刷新率的优势与挑战

Android Perfetto 系列 6&#xff1a;为什么是 120Hz&#xff1f;高刷新率的优势与挑战本文是 Android Perfetto 系列的第六篇&#xff0c;主要介绍 Android 设备上 120Hz 刷新率的相关知识。如今&#xff0c;120Hz 已成为 Android 旗舰手机的标配&#xff0c;本文将讨论高刷新…...

如何快速实现歌词显示:群晖Audio Station完美解决方案

如何快速实现歌词显示&#xff1a;群晖Audio Station完美解决方案 【免费下载链接】qq_music_aum Synology LRC Plugin. 群晖 Audio Station 歌词插件&#xff0c;歌词来自QQ音乐。 项目地址: https://gitcode.com/gh_mirrors/qq/qq_music_aum 还在为群晖Audio Station缺…...

避坑指南:Python操作Word文档最常见的5个错误(python-docx实战心得)

Python-docx实战避坑指南&#xff1a;5个高频错误与解决方案 在自动化办公场景中&#xff0c;Python操作Word文档的需求日益增长&#xff0c;而python-docx库作为主流工具&#xff0c;其易用性背后隐藏着不少"暗礁"。许多开发者在基础教程阶段一帆风顺&#xff0c;却…...

OpenClaw隐私保护实践:GLM-4.7-Flash本地处理敏感数据

OpenClaw隐私保护实践&#xff1a;GLM-4.7-Flash本地处理敏感数据 1. 为什么选择本地化方案处理敏感数据 去年我在处理一批客户合同时遇到了一个棘手问题——合同中包含大量身份证号、银行账号等敏感信息&#xff0c;而团队当时使用的云端AI解析服务需要上传完整文件。虽然服…...

ai结对编程实践:如何利用kimi在快马平台智能辅助完成用户认证系统开发

AI结对编程实践&#xff1a;如何利用Kimi在快马平台智能辅助完成用户认证系统开发 最近在开发一个需要用户认证功能的项目&#xff0c;后端用Node.js Express&#xff0c;前端用Vue。作为一个独立开发者&#xff0c;面对这种前后端都要兼顾的情况&#xff0c;我决定尝试用Kimi…...

【独家首发】Polars 2.0 vs Pandas 2.2清洗基准测试:10亿行CSV清洗仅耗11.3秒?真相在此

第一章&#xff1a;Polars 2.0大规模数据清洗的范式跃迁Polars 2.0 不再是 Pandas 的轻量替代品&#xff0c;而是一次面向现代硬件与真实业务场景的数据处理范式重构。其核心跃迁体现在零拷贝内存布局、全链路惰性执行引擎&#xff08;LazyFrame&#xff09;与原生支持的并行流…...

在WSL2 Ubuntu 22.04上搞定RK3568 SDK编译:我遇到的8个坑和填坑方法

在WSL2 Ubuntu 22.04上搞定RK3568 SDK编译&#xff1a;我遇到的8个坑和填坑方法 作为一名长期在Windows环境下工作的嵌入式开发者&#xff0c;第一次尝试在WSL2中编译RK3568 SDK的经历简直像是一场噩梦。从环境配置到最终构建成功&#xff0c;我踩遍了几乎所有可能的坑。这篇文…...

Go语言的context.WithCancel取消信号传播与资源清理在分布式系统中的协调

Go语言的context.WithCancel取消信号传播与资源清理在分布式系统中的协调 在分布式系统中&#xff0c;任务的取消与资源清理是确保系统稳定性和高效性的关键挑战。Go语言通过context包提供了优雅的解决方案&#xff0c;尤其是context.WithCancel机制&#xff0c;能够实现跨组件…...

告别低效收藏:MarkDownload让网页内容保存效率提升300%

告别低效收藏&#xff1a;MarkDownload让网页内容保存效率提升300% 【免费下载链接】markdownload A Firefox and Google Chrome extension to clip websites and download them into a readable markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdownload …...