java对象的实例化过程
来源:互联网 发布:淘宝电热护肩定制 编辑:程序博客网 时间:2024/06/04 19:10
关于对象的实例化过程:
1.检查类是否加载,如果没有加载就加载这个类,要加载所有父类;
懒式加载(按需加载):如果第一次用到加载,只加载一下.通过ClassPath制定的路径寻找类文件(.class) 加载以后是一个对象,类型是class.获得这个类对象:student.class-->class实例
2.在内存堆中分配对象空间.递归分配所有父类和子类属性空间.先父类型再子类型,属性默认自动初始化.自动初始化为"0"值;
3.进行属性的赋值;
4.递归调用父类构造器.(默认调用父类无参构造器);
5.调用本类构造器
其实面试过程中有很多类似的考题,考的都是初始化的顺序;首先要弄清楚以下几个概念:
1.静态初始化是指执行静态初始化块里面的内容;
2.实例初始化是指执行实例初始化块里的内容;
3.构造方法:一个名称跟类的名称一样的方法,特殊在于不带返回值;
给出以下代码,方便理解:
public class TestInstanceInit {
public static int n = 0;// 静态变量
static {// 这是静态初始化块
print();
System.out.println("this is static block");
}
{// 实例初始化块
System.out.println(n);
}
public TestInstanceInit() {// 构造方法
System.out.println("this is TestInstanceInit's constructor~");
}
public static void print() {// 静态方法
System.out.println("this is static method~");
System.out.println(n);
n += 1;
}
public static void main(String[] args) {
new TestInstanceInit();
}
}
控制台输出结果:
this is static method~
0
this is static block
1
this is TestInstanceInit's constructor~
如果有一个变量怎么处理呢:
public class TestInstanceInit {
// 静态变量
public static String staticField = "静态变量";
// 变量
public String field = "变量";
// 静态初始化块
static {
System.out.println(staticField);
System.out.println("静态初始化块");
}
// 初始化块
{
System.out.println(field);
System.out.println("初始化块");
}
// 构造器
public TestInstanceInit() {
System.out.println("构造器");
}
public static void main(String[] args) {
new TestInstanceInit();
}
}
静态变量
静态初始化块
变量
初始化块
构造器
总结如下:
执行顺序
(静态变量、静态初始化块)>(变量、初始化快)>构造器
静态变量和静态初始化快/变量和初始化快的先后顺序取决于它们在类中出现的先后顺序
- java实例化对象的过程
- java实例化对象的过程
- java对象的实例化过程
- Java对象的实例化过程
- Java中对象的实例化过程
- java对象的实例化过程
- java实例化对象的过程
- Java 实例化对象的过程
- Java对象实例化的过程。
- java实例化对象的过程
- Java子类对象的实例化过程
- java 对象实例化过程
- java实例化对象过程
- Java 对象实例化过程
- Java对象实例化过程
- java对象实例化过程
- 【java基础】一个Java对象的实例化过程!
- 对象的实例化过程
- 创建菜单和状态栏控件
- 以后坚持写博客啦
- grails查询出html标签问题
- 《Java平台体系》——第二章 JVM——JNI(Java本地接口)
- win7 IIS运行ASP.NET程序500错误解决方案总结
- java对象的实例化过程
- 《Java平台体系》——第二章 JVM——实战:用JBE修改Java字节码
- 9家在iOS平台上收入最高的中国公司
- C实现链式队列
- 内核同步机制-优化屏障和内存屏障
- Selenium 使用介绍
- 《Java平台体系》——第二章 JVM——实战:ClassLoader的应用
- 求最大和子矩阵
- CImage类