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.先执行初始化对象中属性,再执行构造方法中的初始化 当使用继承这个特性时,程序是如何执 ...
随机推荐
- GB28181/GB35114国标平台LiveGBS适配国产信创环境,使用国产数据库达梦数据库、高斯数据库、瀚高数据库的配置方法
1.如何配置切换信创达梦数据库? livecms.ini -> [db]下面添加配置如: ... [db] dialect=dm url =dm://SYSDBA:Aa12345678@loca ...
- VUE+SpringBoot环境准备
一.nodejs下载地址 官网:https://nodejs.org/zh-cn/ 其它版本:https://nodejs.org/zh-cn/download/releases/ 源码地址:http ...
- C++ std::string
C++ 标准库中的 std::string 是处理字符串的核心类,封装了字符串的存储.管理和操作,相比 C 风格的 char* 更安全.易用. 1.基本概念 1.1 基本特性 std::string ...
- 【MSPM0G3507系列】FIFO模式DMA转运
FIFO (First Input First Output 先进先出队列) 举例:1号先进入通道,2号再进入通道,3号最后进入通道:1号先出通道,2号再出,3号最后出. 说明 在配置ADC的时候,有 ...
- FlashAttention逐代解析与公式推导
Standard Attention 标准Attention计算可以简化为: \[O = softmax(QK^T)V \tag{1} \] 此处忽略了Attention Mask和维度归一化因子\( ...
- 解决QT5升级Creator 14.x后出现launch debugger红色报错问题-OK
QT5升级Qt Creator 14.x后出现launch debugger红色报错,QT5 C++项目可以编译运行,但无法调试运行.经试验:选择Desktop QT 5.15.2 MinGW 64- ...
- loki仿函数原理
loki仿函数原理 问题一:已知函数Fun有2个参数,请完成CTestFunctor类,使得CTestFunctor的()实际调用Fun,部分代码如下: #include <iostream&g ...
- MFC一些必要的名词(一)
API:一个系统内部提供给用户的函数使用包,集合等就叫做该系统的API 句柄:可以将其分为:图标句柄(HICON),光标句柄(HCURSOR),窗体句柄(HWND),应用程序实例句柄(HINSTANC ...
- 总资料汇总&关联化站点形式的尝试(未完成/归档3)
归档用 总资料汇总&关联化站点形式的尝试 在原先的文章当中,我曾经稍微归整了一些关于自己资料,这里引用下原文 梳理 | 脑神经科学原理学习资料整理 posted @ 2025-09-23 15 ...
- 在nginx中实现回源日志的功能
本文分享自天翼云开发者社区<在nginx中实现回源日志的功能>.作者:尹****聪 nginx中已经提供了访问日志的功能,主要对客户端的访问状态等进行记录,比如响应给客户端的状态码,请求u ...