java变量的初始化顺序小结

Mac上IDEA的PlantUML插件报错‘找不到Graphviz’?手把手教你用Homebrew搞定(附阿里云镜像避坑) 本文详细解决了Mac上IDEA的PlantUML插件报错‘找不到Graphviz’的问题,通过Homebrew安装Graphviz并配置阿里云镜像源,特别针对Apple Silicon芯片用户提供了优化方案。文章还涵盖了IDEA中PlantUML插件的正确配置和常见问题排查,帮助开发者高效使用PlantUML进行UML图表设计。 阅读详情

本文转自:http://www.jb51.net/article/37885.htm,并作了增减。
1、无继承
对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序是:
(静态变量、静态初始化块)>(变量、初始化块)>构造器
public class InitialOrderTest
{
public static String staticfield=”静态变量”;
public String field=”变量”;

static
{
System.out.println(staticField);
System.out.println(“静态初始化块”);
}

{
System.out.println(field);
System.out.println(“初始化块”);
}

public InitialOrderTest()
{
System.out.println(“构造器”);
}

public static void main(String[] args)
{
new InitialOrderTest();
}
}
输出结果:
静态变量
静态初始化块
变量
初始化块
构造器

2、有继承
子类的静态变量和静态初始化块的初始化是在父类的变量、初始化块和构造器初始化之前就完成。
class Parent {
// 静态变量
public static String p_StaticField = “父类–静态变量”;
// 变量
public String p_Field = “父类–变量”;
// 静态初始化块
static {
System.out.println(p_StaticField);
System.out.println(“父类–静态初始化块”);
}
// 初始化块
{
System.out.println(p_Field);
System.out.println(“父类–初始化块”);
}
// 构造器
public Parent() {
System.out.println(“父类–构造器”);
}
}//如果你想把这两个类放在同一个文件且名字起为SubClass, 父类前不能加public
public class SubClass extends Parent { 
// 静态变量
public static String s_StaticField = “子类–静态变量”;
// 变量
public String s_Field = “子类–变量”;
// 静态初始化块
static {
System.out.println(s_StaticField);
System.out.println(“子类–静态初始化块”);
}
// 初始化块
{
System.out.println(s_Field);
System.out.println(“子类–初始化块”);
}
// 构造器
public SubClass() {
System.out.println(“子类–构造器”);
}
// 程序入口
public static void main(String[] args) {
new SubClass();
}
}

输出结果:
父类–静态变量
父类–静态初始化块
子类–静态变量
子类–静态初始化块
父类–变量
父类–初始化块
父类–构造器
子类–变量
子类–初始化块
子类–构造器

3、静态变量和静态初始化块
静态变量和静态初始化块是按照他们在类中的定义顺序进行初始化的。同样,变量和初始化块也遵循这个规律。
public class testOrder {
// 静态变量
public static TestA a = new TestA();
public TestC c = new TestC();
// 静态变量
public static TestB b = new TestB();
public testOrder(){
System.out.println(“in constract”);
}
// 静态初始化块
static {
System.out.println(“静态初始化块”);
}
public static void main(String[] args) {
new testOrder();
}
}
class TestA {
public TestA() {
System.out.println(“Test–A”);
}
}
class TestB {
public TestB() {
System.out.println(“Test–B”);
}
}
class TestC {
public TestC() {
System.out.println(“Test–C”);
}
}

输出结果:
Test–A
Test–B
静态初始化块
Test–C
in constract

4、初始化杂记
1. 类中域的初始化:默认值为(数值为0、布尔变量为false、对象引用为null)
方法中局部变量必须明确初始化,否则会报错。
2. 如果类中提供了至少一个构造器,但是没有提供无参数的构造器,则在构造对象时如果没有提供参数就会被视为不合法。

CMap数据库学习及结果可视化 CMap是一个生物信息学数据库和工具,旨在通过比较基因表达谱来揭示药物、基因和疾病之间的潜在关联。CMap数据库主要用于寻找药物、化合物和生物过程之间的关系,并用于药物重定位(drug repurposing)和疾病机制研究。 阅读详情

相关推荐

riscv32-gcc工具链实战:从下载到编译的完整指南

本文提供了一份详尽的riscv32-gcc工具链实战指南,涵盖从官方渠道下载预编译版本、正确选择riscv32-glibc版本、配置环境变量到实战编译的全过程。通过清晰的步骤和避坑指南,帮助开发者快速搭建稳定的RISC-V交叉编译环境,并成功编译从Hello World到Linux内核的程序。

s3t4u的博客 675

JAVA中变量初始化顺序

自己撸的代码,亲测是正确的。

qq_36159851的博客 259

【实战案例】IBM V3500存储控制器故障诊断与更换全流程解析

本文详细解析了IBM Storwize V3500存储控制器发生故障后的完整处理流程。通过还原真实故障现场,介绍了如何利用服务助手精准定位缓存模块损坏的根源,并逐步指导完成控制器备件准备、核心部件移植更换、系统上线同步及全面功能验证的全过程,为存储运维人员提供了一份实用的实战指南。

weixin_29269441的博客 546

java父子类实例化时对应的 成员变量、方法块、静态方法块初始化顺序小结

/** * Created by lightman_mac on 2018/9/4. * <p> * 奇葩情况: 在父类构造器里调用子类的方法 * * 遇到 WuhuaBase b = new WuhuaChild()的时候, * 因为要初始化WuhuaChild肯定得先初始化它的各种父类, * 然后代码就跳转到了父类构造方法 * * 在父类构造方法里有一个cal...

小葵的专栏 396

在天问block环境下LU-ASR01与51单片机的基础运用

正确步骤将模块和电脑连接后,仍然显示未连接(如4.1中图片中的编译下载后面显示未连接),可以尝试关闭软件后尝试,如果仍然不行换一条type-c线再试;以上方式都不行,可能要怀疑ASR01硬件损坏,跟商家联系!!!

BUG7073的博客 1万+

手把手教你用6轴IMU跑通LIO-SAM:参数配置与代码修改保姆级教程

本文提供了一套完整的6轴IMU适配LIO-SAM的解决方案,包括参数配置与代码修改的详细步骤。从理解6轴与9轴IMU的关键差异入手,逐步指导如何调整核心配置文件params.yaml、重构utility.h关键函数、优化mapOptimization.cpp的位姿融合逻辑,并给出编译验证与性能调优建议,帮助开发者快速实现6轴IMU在LIO-SAM中的稳定运行。

weixin_28717807的博客 356

Java面试-变量初始化顺序:静态变量、实例变量、构造函数

本文系统解析Java中静态变量、实例变量和构造函数的初始化顺序。核心原则为"先静态后实例,先父类后子类,先变量后构造"。静态成员在类加载时按代码顺序初始化(仅一次),实例成员在每次对象创建时初始化,构造函数最后执行。继承场景下遵循父类→子类的顺序,并通过代码示例演示完整生命周期。文章还对比了静态/实例代码块特性,并指出常见面试考点,帮助开发者避免NPE等初始化问题,掌握对象创建底层机制。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

STK传感器配置全攻略:从光学到雷达的7种视场类型详解(附避坑指南)

本文详细解析了STK软件中传感器的7种视场类型,从基础的Simple Conic、Complex Conic到高级的SAR与EOIR,提供了完整的配置步骤与实战避坑指南。重点阐述了雷达、光学等不同物理设备的建模选择逻辑,并针对常见的“No Access”等报错问题给出了系统性的排查方案,帮助工程师高效完成卫星系统设计与任务分析。

weixin_29232507的博客 228

Java中变量初始化的顺序

要明白Java变量的初始化,那么首先需要知道Java中存在哪些变量。在Java中存在2种变量,一种是类的成员变量,另一种则是定义在函数(方法)里的局部变量。 类的成员变量 对于前者即类的成员变量,当你只声明变量而没有赋值时,Java会对这类变量自动初始化,当然自动初始化也遵循着一套规则。具体如下: 函数内的局部变量 而对于函数内的局部变量则需要编程人员自己显示地初始化,如果只声明变...

Chaolei3的博客 1128

SPSS实战:如何用Harman单因素检验搞定共同方法偏差(附完整操作步骤)

本文提供了一份详尽的SPSS实战指南,手把手教你运用Harman单因素检验来诊断共同方法偏差。文章从核心概念讲起,逐步详解数据准备、SPSS操作步骤、结果解读与报告撰写,帮助研究者快速掌握这一关键的数据质量控制方法,确保量化研究结论的可靠性。

weixin_29263201的博客 1693

Android NDK/JNI面试题大全及参考答案(3万字长文)

是一套工具集合,它允许开发者为Android平台编写原生应用程序或者应用程序的部分模块。NDK 主要用于开发那些需要高性能计算的应用程序,例如游戏引擎、图像处理软件或音频/视频编码解码器等。通过使用 C 或 C++ 编写代码,开发者可以利用硬件加速功能,提高应用性能。NDK 提供了一系列工具来帮助开发者完成从源代码到可执行文件的整个过程,包括编译、链接、调试等功能。

大模型大数据攻城狮的专栏 1256

Java中变量的初始化以及变量的初始化顺序,已经加入个人的简单理解

由于篇幅原因,就不多做展示了[外链图片转存中…(img-pAie6d5M-1711750510833)][外链图片转存中…(img-PZiSNevT-1711750510834)][外链图片转存中…(img-c85Rm2pH-1711750510834)][外链图片转存中…(img-eHq6cTMH-1711750510835)][外链图片转存中…(img-XOdLQ4mv-1711750510835)][外链图片转存中…(img-Ij6LNKzU-1711750510836)]

m0_57077948的博客 766

开心消消乐

1)当点击一个1时,该1变被反转为0,同时相邻的上、下、左、右,以及左上、左下、右上、右下8个方向的1(如果存在1)均会自动反转为0;2)进一步地,一个位置上的1被反转为0时,与其相邻的8个方向的1(如果存在1)均会自动反转为0;上述样例中,四个角上的1均在中间的1的相邻8个方向上,因此只需要点击一次即可。给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。在上述4 * 4的矩阵中,只需要点击2次,即可将所有的1进行消除。接下来N行表示矩阵的初始值,每行均为M个数,取值范围[0,1]

面试高手的博客 2728

java变量,初始化快,构造函数的执行顺序

对于JAVA中类的初始化是一个很基础的问题,其中的一些问题也是易被学习者所忽略。当在编写代码的时候碰到时,常被这些问题引发的错误,感觉莫名其妙。而且现在许多大公司的面试题,对于这方面的考查也是屡试不爽。不管基于什么原因,我认为,对于java类中的初始化问题,有必要深入的了解。Java类的初始化,其实就是它在JVM的初始化问题(类加载的问题),对于它在JVM中的初始化是一个相当复杂的问题,是给专家们来探讨的,所以在这里我只是对一些容易忽略的问题,发表一下个人观点: 1,在一个类的内部(不考虑它是另一个类的派生

自信人生一百年 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java中全局变量初始化顺序

首先,在加载类或者创建类的第一个对象的时候,初始化静态变量。但是无论创建多少个对象,静态变量只初始化一次。 然后,初始化非静态变量。如果非静态变量在声明的位置没有初始化,则编译器为基本类型数据赋值0,对象引用赋值为null。 最后,是调用构造器初始化。 下面通过代码并结合继承详细解释: class Insect { private int m = printInit("Insect.m...

markMe1024的博客 3276

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java基础之变量初始化顺序

类的初始化 当一个类从main入口方法,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序: package cn.bzu.look.dao; public class ClassLoadTest { private static User user = new User(); static { System.out.println("static code block...

奋斗的哼哼 681

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java初始化顺序,静态变量,static块,实例变量,构造器的初始化顺序

2.继承情况下Java初始化顺序 用代码和输出直接说明: package com.kael; /** * * @Title:Demo004 * @Description: * @Copyright:Copyright (c) 2012 * @Date:2012-7-25 * @author feilong.li */ public class Initial

Just Code 2507

java中static变量与非static变量初始化顺序

 先看下面的程序:package c05.net;class Bowl {Bowl(int marker) {System.out.println("Bowl(" + marker + ")");}void f1() {System.out.println("Ok");}}class Cupboard {Bowl b1 = new Bowl(1);static Bowl b

painss的专栏 2564

java变量初始化顺序_详解Java变量的初始化顺序

为了确保程序在Java程序中的健壮性,在初始化对象之前,必须确保对象中的所有变量都被初始化,想要了解详解Java变量的初始化顺序,那就继续关注爱站技术频道小编为大家介绍的精彩内容吧!规则1(无继承情况下):对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器证明代码:public class InitialOr...

weixin_28997879的博客 330

java类变量与实例变量的初始化顺序

我们一共考虑4个部分,类变量的初始化,static静态(初始化)代码块,实例变量的初始化,(普通)初始化代码块。 理解类变量的初始化和static初始化代码块先需要了解java的类加载器的运行机制。 参考https://blog.youkuaiyun.com/qq_31156277/article/details/80188110这篇博文讲的非常详细,这里仅仅简要的说一说: Java虚拟机中类加载的全过程,即...

yuyu 919

Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)

我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序以此是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:  Java代码  public class InitialOrderTest {  // 静态变量  public static String staticField = "静态变量";  //

caomiao2006的专栏 3267

java用一个方法对变量初始化_Java中变量的初始化顺序

Java中变量的初始化顺序在写一个通用的报警模块时,遇到一个有意思的问题,在调用静态方法时,发现静态方法内部对静态变量引用时,居然抛出了npe,仿佛是因为这个静态变量的初始化在静态方法被调用时,还没有触发,从而导致这个问题,因此今天专门来学习下静态成员的初始化顺序,以及上面这个问题导致的原因I. 初始化顺序类的初始化顺序静态变量, 静态代码快 -》 实例变量(属性,实例代码块,构造方法)继承关系初...

weixin_31662303的博客 418

java中的static变量初始化_Java初始化静态变量的时间顺序

1. 开始吧!今天,我们来探讨交流下静态变量初始化过程。Java虚拟机在类加载期间也同样遵循这个过程。2. 初始化过程在较高的层次上,JVM执行以下步骤:首先,加载并链接类。然后,这个过程的“初始化”阶段处理静态变量初始化。最后,调用与类关联的main方法。在接下来的讨论中,我们来探索下类变量初始化。3. 类变量在Java中,静态变量也称为类变量。也就是说,它们属于一个类,而不是一个特定的实例。因...

weixin_29770269的博客 2696

Java类的初始化顺序 (静态变量、静态初始化块、变量 )

我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序以此是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:  Java代码  public class InitialOrderTest {  // 静态变量  public static String staticField = "

ITofwanyifei的专栏 918

变量初始化的顺序

变量初始化的顺序问题 看java编程思想,在变量初始化过程中有点绕,摘出来,记录下。 /** * 定义一个bowl类 * * @author 吧嘻小米 * @since 1.0-SNAPSHOT */ public class Bowl { public Bowl(int marker) { System.out.println("Bowl(" + marker ...

JiaWei2438的博客 298

Java构造方法、成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的?

【Java笔试真题】:构造方法、成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的? 【解答】: 当类第一次被加载的时候,静态变量会首先初始化,接着编译器会把实例变量初始化为默认值,然后执行构造方法。 Java程序的初始化一般遵循以下三个原则(以下三原则优先级依次递减): ① 静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象(变量)只初始化一次,而非静态对象(变量)可...

月吖吖 3735
上一篇: java 中堆、栈、(字符串)常量池
下一篇: 排序小结(java实现 )
c1925363518
博客等级 码龄11年 4粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值