我的理解是,我可以将混合数据存储在JavaScript数组中,以及将数组中的任何元素更改为其他类型.解释器如何跟踪任何元素在物理内存中的位置.如果我将元素更改为更大的数据类型,如何防止覆盖下一个元素中的数据.
我假设数组只存储对实际对象的引用,并且当放置在数组中时,基元被包裹在场景后面.
假设是这种情况,如果我对原始变量有不同的句柄并更改存储在数组中的值是同步性保持?
我知道我可能已经回答了我自己的问题,但我不确定,我找不到有关此事的任何信息.
我试图将JVM中的初始化和实例化过程拼凑在一起,但JLS对一些细节有点迟钝,所以如果有人想清除一些细节,我们将不胜感激.这是我迄今为止能够弄清楚的.
初始化
递归初始化类的静态最终变量及其作为编译时常量的接口.
退出以文本顺序处理静态块和静态字段的递归.
实例化
递归初始化作为编译时常量的类的最终实例变量.
退出递归处理文本顺序中的非静态块和实例字段,在返回时将它们预先添加到构造函数中.
好的,现在提问.
是按声明顺序处理的接口?
是在单独的递归堆栈中处理的接口?
a)如果是,是否在超类之前或之后处理接口?
b)如果是,我在推断其中一个或其他(接口或超类)在其他编译时常量之前初始化其非编译时常量字段时是正确的.
调用非默认的super()构造函数在此过程中起什么作用?
我的任何结论都错了吗?
我错过了其他任何关键细节吗?