这里将自己学习java及其应用的一些笔记、积累分享一下,如果涉及到了文章、文字侵权,请联系我删除或调整。
一、对象的创建过程
1.1 概述
class A {
int v1 = 1;
static int v2 = 2;
static {...}
A() {...}
}
class B extends A {
int v3 = 3;
static int v4 = 4;
static {...}
B() {...}
}
new B()
- 第一次用到A和B类,加载两个类
1. 加载父类,给父类静态变量分配内存
2. 加载子类,给子类静态变量分配内存
3. 执行父类的静态变量赋值运算,和静态初始化块
4. 执行子类的静态变量赋值运算,和静态初始化块
- 新建对象
5. 新建父类对象,为父类实例变量分配内存
6. 新建子类对象,为子类实例变量分配内存
7. 父类的实例变量赋值运算
8. 父类的构造方法
9. 子类的实例变量赋值运算
10. 子类的构造方法
1.2 练习:验证对象的创建过程
package 对象的创建过程;
public class Test1 {
public static void main(String[] args) {
/*
* 分配内存是底层代码,观察不到;
* 只能观察自己的运算代码
*/
B obj1 = new B();
System.out.println("-----------------------------");
B obj2 = new B();
}
}
class A{
String s1 = "父类成员变量赋值!";
static String S2 = "父类静态变量赋值!";
static {
System.out.println("父类静态初始化块执行!");
}
public A() {
System.out.println("父类构造器执行!");
}
}
class B extends A{
String s1 = "子类成员变量赋值!";
static String S2 = "子类静态变量赋值!";
static {
System.out.println("子类静态初始化块执行!");
}
public B() {
System.out.println("子类构造器执行!");
}
}