JAVA基础篇 之 类的初始化
-
类中属性的隐式初始化,代码如下,我们看下不同类型默认的初始值是什么
创建一个Demo类如下:
class Demo { int a; byte b; short c; long d; boolean e; char f; float g; double h; Demo demo; }
可以看到初始化的值如下:
-
在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间。它们仍然会在任何方法(包括构造器)被调用之前得到初始化。
我们看如下代码:
public class Test01 {
public static void main(String[] args) {
House house = new House(3);
}
static class House {
Window window3 = new Window(3);
public House(int windows) {
System.out.println("house(" + windows + ")");
}
Window window1 = new Window(1);
Window window2 = new Window(2);
}
static class Window {
public Window(int marker) {
System.out.println("window(" + marker + ")");
}
}
}
打印结果如下:
window(3)
window(1)
window(2)
house(3)
可以看到,在初始化时,会先对类中的属性进行显示初始化,即对属性进行一次显示的赋值,在显示初始化执行完后,会对类进行构造函数初始化。
-
静态数据的初始化
首先我们要知道,静态数据是所有类对象共享的,静态数据只占一份存储区域。静态数据随着类的加载而加载,static关键字只能作用于域,我们不能在方法中使用static关键字(稍后会解释为什么)。如果一个我们在声明类时,没有给静态只能初始值,那么它会被默认初始化成对应的值(见【1】默认初始化)
-
这里提前说一下:
对于初始化我们要记得一个原则,先静态后非静态,先父后子
即在初始化一个类时,会先初始化对静态数据进行初始化,在父类跟子类同时有静态数据时,遵循先父后子的规律,当静态数据初始化完后,非静态的数据初始也遵循先父后子的顺序
作者:程序员DMZ
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· C# 13 中的新增功能实操
· 万字长文详解Text-to-SQL
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· 卧槽!C 语言宏定义原来可以玩出这些花样?高手必看!