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.先执行初始化对象中属性,再执行构造方法中的初始化 当使用继承这个特性时,程序是如何执 ...
随机推荐
- 通过LiveNVR实现将Onvif/RTSP、RTMP等直播流转GB28181国标协议输出
Onvif/RTSP流媒体服务 LiveNVR Onvif/RTSP流媒体服务,支持RTSP稳定拉流接入,支持Onvif协议接入,支持RTMP/HLS/HTTP-FLV/RTSP/Websocket- ...
- DS1302时钟+单片机+普中+江科大自化协
1.现象: 2.参考程序 2.1 主程序 #include <REGX52.H> #include "LCD1602.H" #include "DS1302. ...
- phpkg 让 PHP 摆脱 Composer 依赖地狱
phpkg 让 PHP 摆脱 Composer 依赖地狱 Composer 挺好,但 PHP 还能更强 写 PHP 的都知道,Composer 用起来很顺手:composer require.vend ...
- 本地化部署 deepseek, 从配置到安装的完整指南
本地化部署 deepseek, 从配置到安装的完整指南 随着 AI 技术在各场景的应用,目前不少企业或个人出于数据隐私保护.离线使用需求,会考虑本地化部署 deepseek.但本地化部署费时费力还很容 ...
- JAVA中的for循环和while循环详解
for循环 格式 fou(初始化;条件判断语句;条件控制语句){ 循环体语句: } 执行流程: 执行初始化语句 执行条件判断语句,结果是false的话循环结束,结果是true执行循环语句 执行条件控制 ...
- SOFABoot 入门及基本使用
1.前言 SOFABoot是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等能力.在增 ...
- Apollo分布式配置中心
1.概述 1.1定义 Apollo,称阿波罗,是携程研发的开源配置管理中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性.它支持4个维 ...
- AT_agc012_c [AGC012C] Tautonym Puzzle 题目分析
题目 AT_agc012_c [AGC012C] Tautonym Puzzle 题目描述 当字符串 $ x $ 满足以下条件时,称 $ x $ 为好字符串. 条件:$ x $ 可以表示为某个长度不少 ...
- 权威调研榜单:成都微信小程序开发公司TOP5榜单好评深度解析
随着数字化转型加速,微信小程序已成为企业提升运营效率和品牌价值的重要工具.成都作为西部科技中心,聚集了众多专业的小程序开发服务商.本次榜单基于企业技术实力.客户案例.服务覆盖及行业口碑等维度,对成都地 ...
- 谷哥插件大全 --- 浏览器js注入 油猴脚本