1

这里有没有人不同意:

JLabel lbl;
lbl = new JLabel ("a label");

相当于:

JLabel lbl = new JLabel ("a label");

我猜不是?

请注意 - 这与以下问题有关:

public class Test 
extends JApplet
{
    JLabel lbl;
    lbl = new JLabel ("a label");
    public void init() 
    {
    }
}

此代码 (A) 给出以下错误:

令牌“;”上的语法错误,预期

但是,此代码 (B) 完美运行:

public class Test 
extends JApplet
{
    JLabel lbl = new JLabel ("a label");
    public void init() 
    {
    }
}

知道为什么会这样吗?这可能与 init 方法有关。我仍然期待看到数学上精确的解释,而不是可解释的理论。非常感谢。我是小程序的新手。PS:为简单起见,我省略了包导入(例如 import javax.swing.*; )。

4

3 回答 3

2

你不能在课堂上获得像这样的免费说明。类主体可以包含方法、字段声明、构造函数、内部类声明、静态和实例初始化程序块,但不能包含这样的自由指令。

你可以做

JLabel lbl;

{
    lbl = new JLabel ("a label");
}

但它很丑。

于 2012-12-27T11:45:55.647 回答
2

它与applet 或init() 方法无关。您只能在方法体或块内有指令(lbl = new JLabel ("a label");没有声明是指令)

于 2012-12-27T12:27:39.633 回答
2

如果在方法中使用它应该是相同的:

public void setMethod() {
    JLabel lbl;
    lbl = new JLabel ("a label");
}
于 2012-12-27T12:26:27.653 回答