Java - 对象声明和初始化

时间:2011-12-31 15:53:44

标签: java object initialization declaration

构造新对象时,我使用以下代码。在这段代码中,对象引用变量'a'?

BankAcc a = new BankAcc();

另外,出于兴趣,如果上面构造了一个新的对象变量a,下面做了什么?它是否仅在没有变量/对象引用的情况下创建新对象?

new BankAcc();

谢谢!

9 个答案:

答案 0 :(得分:7)

是的,是的。

当您只想使用匿名对象而不关心有引用时,第二个可能很有用。像:

new Thread(new Runnable() {
     public void run () { }
}).start();

答案 1 :(得分:6)

this Java tutorial中所述,使用

创建对象
BankAcc a = new BankAcc();

是一个多步骤的过程。您有声明实例化初始化步骤

我只会重点介绍该教程中与您的问题相关的最有趣的部分:

  • 声明变量,请使用type name;(在本例中为BankAcc a;),表示a将/可用于引用到BankAcc类型的数据。目前,a未引用任何对象

  • 实例化 a,请使用new关键字。这将为新对象分配内存并返回对该内存的引用。 new运算符需要一个单独的后缀参数:对构造函数的调用。是否将调用new返回的引用分配给变量是您的选择。您也可以直接在表达式中使用此引用(例如new Rectangle().height;

  • 初始化是对构造函数的实际调用,它初始化新对象。构造函数由new运算符

  • 调用

答案 2 :(得分:3)

new BankAcc()创建对象并调用构造函数。有时您需要这样做,例如:

Rectangle rect = new Rectangle(new Point(100, 200), new Dimension(100, 300));

这只是一个代码示例,以便您可以看到如何使用它。

答案 3 :(得分:1)

是的,它只是创建对象,但它不会被分配给任何引用,因此您无法访问该对象并对该对象执行任何操作。它会留在内存中直到收集垃圾。

答案 4 :(得分:1)

是的,是的。

请注意,仅创建类的新实例而不保留对它的引用并不是闻所未闻(尽管不一定理想),因为类的构造函数可以执行给定操作所需的所有操作。

答案 5 :(得分:1)

第二行代码实例化BankAcc类的匿名实例。

这是一种实例化类的快速方法,它通常在您只需要一次引用时使用,例如将类实例传递给方法参数:

myFunc(new BankAcc());

答案 6 :(得分:0)

是的,变量引用是“a”,是new BankAcc();创建一个没有变量的新对象,从而使其匿名。

答案 7 :(得分:0)

我认为Sun非常好,

“new运算符通过为新对象分配内存并返回对该内存的引用来实例化一个类.new运算符也会调用对象构造函数。”

所以是的a是对您使用BankAcc运算符实例化的对象new的引用,即您将=的{​​{1}}返回给new变量a,它是对BankAcc

类型实例的引用

关于你的第二点,这可以完成(编译和执行),但我看不出很多理由,除非构造函数做了“重要”的事情。

编辑:请参阅Tudor的答案,了解没有参考的实例化适用的示例

答案 8 :(得分:-5)

对象是实时实体或现实世界实体。 对象的例子是笔,汽车,板,桌子,铅笔等,

假设您的类名是Book.here如何声明对象

预订obj = new Book();