几个问题
如果我在类A类中声明一个变量,为
private int blah = myclass.func();
func()实际调用的时间是什么时候?第一次启动A类?
如果我有
public final int blah = myclass.func();
我知道不知何故blah是动态更新的(例如,每当我调用A类中的其他函数时,我总是得到更新的blah值 - 这是通过调用myclass.func()获得的)...但我不知道我知道为什么。有人会解释这种行为吗?
谢谢, 麦克
答案 0 :(得分:1)
这些是实例初始化程序。见java spec中的8.3.2和第4页& this article中的5个。在输入构造函数之前进行初始化,并且如果你试图做一些奇特的东西,你应该注意前向引用和未初始化变量用法的警告(之前链接的文章在某种程度上讨论它们) )。
初始化程序在构造对象时只执行一次,所以我不确定你在问题的后半部分是在谈论什么。
答案 1 :(得分:1)
您表现得像blah
static
。
func()实际调用的时间是什么时候?第一次启动A级?
每次A类实例化
每当我在A类中调用其他函数时,我总是得到更新的blah值
对于A类的每个实例(对象),都存在一个blah
。每次您说{func()
时,将调用方法blah
并将其值分配给new A()
的每个新实例{1}}。每次出现blah
时都会更新,这是因为您正在查看与上次完全不同的对象。