在这段代码中,我在“main”方法之前看到了以下几行:
JTextArea displayArea;
JTextField typingArea;
我想知道这些行做什么以及何时执行。据我所知,“主要”方法是“入口点”。因此,代码将从“main”方法的开头执行。如果从“main”方法调用所有其他方法,则它们将被执行。如果是这样,则永远不会执行提到的 2 行。而且,就算会被处决,他们到底是做什么的?这对“ClassName objectName”有什么作用?
这些被称为“声明”。他们声明存在两个变量,说明它们的类型和名称。声明的位置决定了它们的范围,换句话说,程序的哪些部分被允许知道那些特定的变量,并且可以引用它们。
您还没有包含整个文件。
这些是字段的声明。它表明当类被实例化时(即从它创建一个对象),每个对象都会有一个对文本区域和文本字段的引用。但是,您必须创建这些对象。
请注意您的主要方法是静态的。这意味着它可以在不实例化包含类的情况下运行。但是,大多数 Java 方法都对对象进行操作。假设您的 main 在 C 类中。很可能在您的 main 的某个地方,您会看到一个“新 C”,这意味着创建了 C 的一个实例。然后将在该新对象上调用其他一些操作(在文件中查找其他非静态方法),这些操作将操纵这两个字段。
它指定类型。
JTextArea displayArea; // this creates textarea type and thus textbox
JTextField typingArea; // thus creates textfield type var and thus text field
这些是KeyEventDemo
类的成员(参考)变量。
当KeyEventDemo
使用new
关键字实例化时,每个实例都会有一个JTextArea
和这些变量JTextField
分别引用。这些被初始化null
并分配为对方法中几个实例的引用addComponentsToPane
。
当对象被 java 虚拟机实例化时,这些声明会被评估。那是在main
方法是这种情况之前。
那些是班级成员。
基本上,在一个 java 类中,你有方法和成员。成员是保存作为该类实例的对象状态的变量。
main 方法是独立的,它是一个静态方法,因此它可以在没有类实例的情况下运行。所以你有在 main() 中运行的逻辑,并且你有在类的实例上运行的逻辑。他们是完全分开的。
如果你也想,在你的 main() 函数中,你可以创建一个类的实例,然后如果需要对成员函数进行任何初始化,它就会“运行”。
但是,并非所有类成员都在构造函数中初始化,并且这些成员将保持为空(因此在这种情况下,此时不会“执行”任何内容)。在您的示例中,没有初始化,因此当构造函数逻辑启动时,这些成员将为 null。