```java
public class Base1 {
int i = 0;
{
System.out.println("In Base1 Initial block:i=" + i++); //①
} // j++;
Base1() {
System.out.println("In Base1 constructor:i=" + i++);
} // Base1(0); ②
Base1(int j) {
this.j = j;
}
int j = 0;
public static void main(String[] args) { //主方法
Child c = new Child();
}
}
class Child extends Base1 {
int i = 0;
{
System.out.println("In Base1 Initial block:i=" + i++); //③
} // j++;
Child() {
System.out.println("In Child constructor:i=" + i);
} //super(); //④
}
请问这段代码的执行机制是什么,求详解!

参考:https://blog.csdn.net/CoderTnT/article/details/126428706
不知道你这个问题是否已经解决, 如果还没有解决的话:可以存储基本数据类型
其他集合只能存储对象,不能存储基本数据类型。但自动拆箱、装箱技术的出现,使其他集合也可以存储基本数据类型。
数组一旦声明,其大小不能发生改变
静态数组称呼的由来。
该特点导致在实际编程中基本不使用数组,而是其他动态容器(ArrayList等)
数组元素逻辑删除
数组初始化后,数组元素只能在逻辑层面删除。在物理层面,其值已写入内存,只能被覆盖,不能被物理删除。在java体系中,若数组存储对象时,数组元素被逻辑删除之后,物理地址上的值依旧存在,此时GC无法将其回收。因此,此种情况下删除数组元素对象的同时,可将其置空,使其被GC回收。
使用整型索引随机访问元素,下标从0开始
随机访问的实现基于数组在内存中的连续存储。数组名指向数组元素的起始位置地址,索引下标是相对于起始地址的偏移量,操作系统在知道起始地址和偏移量之后,可立马获取对应地址上的内容,即所谓的随机访问。这同时也导致数组是存取效率最高的数据容器。但为保证数组各个元素内存仍旧连续,因此在插入和删除时需要移动元素(实质是重新赋值,全部赋值动作整体来看是一种移动效果),其操作效率比较耗时。
数组内存层面的最基本操作是按照索引存取元素、获取数组长度。使用层面的基本操作基于内存上的基本操作,包括增删改查、排序等