azraelxuemo's Studio.

java创造对象

2023/11/15

java创造对象主要分为以下几个步骤

  • 获取对应的类,查看是否加载,如果没有加载把类进行加载
  • 根据类的信息可以直接获取到实例的大小,分配对应内存
  • 调用实例的<init>方法

比如说

1
2
3
4
5
6
7
class bb implements Serializable {
private String bb;
}

class aa extends bb {
private String str1;
}

截屏2023-11-15 09.22.27.png
截屏2023-11-15 09.22.47.png
实例化aa

1
aa aa = new aa();

截屏2023-11-15 09.23.55.png
可以看到我们先 NEW aa分配内存大小
然后再调用aa.<init>

NEW aa分配内存大小的时候也是会计算上来自继承的字段大小

1
2
ClassLayout layout1 = ClassLayout.parseClass(aa.class);
System.out.println(layout1.toPrintable());

截屏2023-11-15 09.26.22.png
会逐步向上解析,将所有非static的成员变量加入到当前的ClassData
截屏2023-11-15 10.56.03.png
截屏2023-11-15 11.00.21.png

CATALOG