java - 类的成员什么时候初始化?
问题描述
究竟是什么时候初始化类成员?
在下面的代码中:
public class A{
public B b = new B();
private C c = new C(123);
public A (arg a){
// Do something
}
public someMethod(){
Log.i(TAG, " "+ b.getD());
}
}
main(){
A a = new A ("xyz"); }
B & C 类的对象什么时候创建?并且可以保证被创建吗?
专业应用程序是否应该使用此类代码?
解决方案
创建对象时,按以下顺序执行以下操作:
- 对象以正确的对象类型在堆上分配,所有实例字段都“默认初始化”为零、false 或 null。
- 计算 super(...) 或 this(...) 中的表达式,并调用链上的下一个类的构造函数。(这会递归链构造函数,以便首先执行 Object 构造函数。)
- 实例变量初始化程序和任何实例初始化程序块按顺序执行。
- 构造函数的主体被执行。
- 构造函数返回。
希望它可以帮助你。
推荐阅读
- node.js - 遍历数组并一次显示一个 React 组件
- api - API 调用中的 GET 方法以保留标头
- java - module-info 的 sbt-assembly 合并策略
- javascript - 如果 let 没有被提升或者它们进入时间死区,那么为什么这个片段会抛出错误,当它可能只是使用全局引用时
- c - 为什么这两个打印语句得到不同的整数?
- mongodb - 如何从 mongodb 中的嵌套文档中查询数据?
- ios - coredata更新json后台线程问题
- r - 子集并从R中的数据帧中提取信息
- php - PHP shell_exec 中的 FFMPEG 命令对于 300Mo mp4 来说太慢了
- sql - 通过 shell 脚本中的命令行参数将参数传递给 sql 文件