【发布时间】:2021-10-07 01:35:48
【问题描述】:
假设我已经创建了类,现在在 main 方法中,我想分配和调用它们。
我写:X x = new X(); 和 x = new X();
这两者之间有什么区别/区别?
【问题讨论】:
-
除非您之前声明了
x变量,否则第二个将不起作用。 -
哦,好吧,现在清楚了
假设我已经创建了类,现在在 main 方法中,我想分配和调用它们。
我写:X x = new X(); 和 x = new X();
这两者之间有什么区别/区别?
【问题讨论】:
x 变量,否则第二个将不起作用。
假设X 是一个具有无参数构造函数(例如默认构造函数)的类,则以下工作:
// Declare and initialize x
X x = new X();
// Assign new value to x
x = new X();
第一行代码声明了一个变量x,并将对X 的新实例的引用分配给它(一个新的X 对象)。第二行将一个新的X 实例分配给已声明的变量x(从而丢弃对第一个对象的引用)。我们通过将类型名称(或单词var)放在变量之前来声明一个变量。所以因为在第一行,我们有X x,这是一个声明。
在 Java 中,变量需要在首次使用之前进行声明。因此,如果没有前面的类型名称 X,第一行代码将无法工作。 Java 会抱怨变量x 没有被声明。
另一方面,我们只能声明每个变量一次。所以将类型名称X 放在第二行之前也是一个错误。我的 Eclipse 说 Duplicate local variable x 因为它“认为”我正在尝试声明另一个名为 x 的变量,这是不允许的(有充分的理由)。
【讨论】:
X 的实例是从类X 创建的对象。 @jjavid