java中类成员初始化顺序
java中初始化类成员方法包括:
1.显示域初始化,比如public int a=1;public static int b=1;
2.初始化块,分为普通初始化块,静态初始化块;
3.构造函数。
初始化的时候,首先是静态类的初始化方式执行,然后才是普通初始方式执行,
并且初始化块总是先于构造函数执行,显式域初始化与初始化块的执行顺序按照代码中出现的顺序执行。
- 显式静态域初始化先于静态初始化块
public class Hello{
public static int staticA=1;
public static int staticB;
static{
System.out.println("Static Inital Block Start");
staticB=2;
PrintAB();
System.out.println("Static Inital Block End\n");
}
public static void PrintAB(){
System.out.println("staticA:"+staticA);
System.out.println("staticB:"+staticB);
}
public Hello(){
Hello.PrintAB();
}
public static void main(String[] args){
Hello h=new Hello();
}
}
输出:
- 显式静态域初始化后于静态初始化块
public class Hello{
public static int staticB;
static{
System.out.println("Static Inital Block Start");
staticB=2;
PrintAB();
System.out.println("Static Inital Block End\n");
}
public static int staticA=1;
public static void PrintAB(){
System.out.println("staticA:"+staticA);
System.out.println("staticB:"+staticB);
}
public Hello(){
Hello.PrintAB();
}
public static void main(String[] args){
Hello h=new Hello();
}
}
输出:
- 显式静态域初始化与初始化块按照出现顺序执行,最后执行构造函数,
注意noStaticD在两个构造快中间初始化,第一个初始化块打印时noStaticD=0,第二个块中变为1
输出:
NoStatic Inital Block for noStaticC Start
noStaticC:1
noStaticD:1
noStaticE:1
noStaticF:0
NoStatic Inital Block for noStaticC End
Constructor Start
noStaticC:1
noStaticD:1
noStaticE:1
noStaticF:1
Constructor END
java中类成员初始化顺序的更多相关文章
- Java类成员初始化顺序
类中包含7中成员:1.静态变量 static2.final静态常量 final static3.静态代码块 static{} //多个代码块顺序执行 4.普通变量5.普通代码块 {} //多个代码 ...
- Java中类的初始化顺序
一.一个类的初始化顺序(没继承情况) 规则: 1.静态变量>普通变量>构造方法 2.变量定义的顺序决定初始化的顺序 3.静态变量和静态块是一样的,普通变量和非静态块是一样的,即能够把 ...
- Java中类成员变量初始化顺序
一. 定义处默认初始化vs构造函数中初始化 java中类成员变量支持在声明处初始化,也可以在构造函数中初始化,那么这两者有什么区别呢?看下面例子 public class FieldsInit { p ...
- Java中的成员初始化顺序和内存分配过程
Java中的成员初始化顺序和内存分配过程 原帖是这样描述的: http://java.dzone.com/articles/java-object-initialization?utm_source= ...
- Java类的成员初始化顺序
Java类的成员初始化顺序 2017-06-01 代码: public class InitializeSequence { public static void main(String[] args ...
- java类的成员初始化顺序和初始化块知识
java类的成员初始化顺序和初始化块知识 转自:http://blog.csdn.net/lgfeng218/article/details/7606735 属性.方法.构造方法和自由块都是类中的成员 ...
- 图示Java类的初始化顺序
Java类的初始化顺序 在开发中,知道Java类的初始化顺序才能让我们更加清楚地掌握程序的执行流程.先把结论贴出来,Java里,从图里的1~6,分别按顺序执行. 以下为代码验证阶段,一共三个类 ...
- java创建对象 的初始化顺序
java创建对象 的初始化顺序 1.初始化块 初始化块通常写在类的构造方法之前,由花括号括起来,通常包含对成员属性进行初始化的语句: 初始化块分为instance初始化块和static初始化块,初始化 ...
- C++成员初始化顺序
#include <iostream> using namespace std; int seti() {cout << "seti" << e ...
- Java学习笔记二十三:Java的继承初始化顺序
Java的继承初始化顺序 当使用继承这个特性时,程序是如何执行的: 继承的初始化顺序 1.初始化父类再初始子类 2.先执行初始化对象中属性,再执行构造方法中的初始化 当使用继承这个特性时,程序是如何执 ...
随机推荐
- win11系统如何设置鼠标右键默认显示更多选项
在命令提示符中,使用管理员权限执行 1.在注册表中添加信息 reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509 ...
- 【学习】重学Swift5-函数和闭包
五.函数和闭包 函数 常见形式 // 无形式参数的函数 func sayHelloWorld() -> String { return "hello world" } pri ...
- 【iOS】APP的优化---IPA大小的压缩
众所周知,在App Store中超过一定大小的文件只能使用WiFi下载(近期提升到了150M,之前是100M).虽然提升了一点,但是我们仍需要注意安装包的大小.毕竟除了游戏很少有人喜欢下很大的应用. ...
- 使用yolo算法对视频进行实时目标跟踪和分割
视频演示 使用yolo算法对视频进行实时目标跟踪和分割 大家好,我是Coding茶水间.今天我来分享一个基于YOLO算法的工具,它可以对视频或图片进行实时目标跟踪和分割. 这个工具使用PyQt5构 ...
- Oracle 19c asm单机OPatch补丁报错"checkSystemCommandAvailable" failed.
一.OPatch Conflict Check As the Grid home user: % $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgai ...
- QT5 C++槽函数的两种connect连接方式的区别,建议使用现代的连接方式
QT5 C++槽函数的两种connect连接方式的区别,建议使用现代的连接方式 (1)QT5 C++ 槽函数定义class MainWindow : public QMainWindow { Q_OB ...
- PCIe数据卡设计资料第611篇-基于VU9P的双路5Gsps AD 双路6Gsps DA PCIe数据卡
基于VU9P的双路5Gsps AD 双路6Gsps DA PCIe数据卡 一.板卡概述 基于XCVU9P的5Gsps AD DA收发PCIe板卡.该板卡要求符合PCIe 3.0标准,包含一片XCVU9 ...
- win10下实现Cl__sh小猫控制WSL网络
情况说明: win10+WSL ,实现在win10下配置小猫咪 for Windows,从而让WSL内也能google上网. 一切都在win10下进行配置 在win10-内下载最新的小猫咪 关闭win ...
- 权威调研榜单:插头电压降测试仪实力厂家TOP3榜单好评深度解析
随着电气安全标准的不断提高,插头电压降测试仪作为电线电缆.家用电器及工业设备检测领域的关键设备,其测量精度与可靠性日益受到行业重视.本文基于对多家企业的技术实力.专利成果.检测精度标准及知名合作案例的 ...
- 国产IPD项目管理软件推荐|别再靠 Excel 推 IPD 了!帮你把IPD流程从“纸上”搬进系统
在制造业.智能硬件.软件研发等行业中,IPD****(集成产品开发)流程已经成为提升产品成功率.降低开发浪费.让组织以"市场为导向"进行创新的关键方法论. 但落地 IPD 的过程往 ...