函数调用变量声明

时间:2010-07-03 02:12:52

标签: java class

几个问题

  1. 如果我在类A类中声明一个变量,为

    private int blah = myclass.func();
    

    func()实际调用的时间是什么时候?第一次启动A类?

  2. 如果我有

    public final int blah = myclass.func();
    
  3. 我知道不知何故blah是动态更新的(例如,每当我调用A类中的其他函数时,我总是得到更新的blah值 - 这是通过调用myclass.func()获得的)...但我不知道我知道为什么。有人会解释这种行为吗?

    谢谢, 麦克

2 个答案:

答案 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时都会更新,这是因为您正在查看与上次完全不同的对象。