在不创建对象的情况下调用类

时间:2017-12-02 23:37:32

标签: java object new-operator

我知道在创建类的对象时存在内存分配,如下所示:

  

测试t =新测试();     t.method1();

但我也可以如下调用mehtod1:

  

new Test()。method1();

因此,在调用method1的第二种方式中,是否分配了内存。因为显然我不是在这里创造一个对象。

由于

1 个答案:

答案 0 :(得分:2)

您的问题的答案是。代码new Test()创建一个对象,该对象恰好是Test类的实例。无论是否将变量分配给变量,都会在堆上为创建的每个对象分配内存。

当然,就像堆上的所有内存一样,只要在范围内没有对该对象的引用,该内存就可用于垃圾收集。如果不将其分配给变量,则表达式new Test()创建的引用一旦使用就会超出范围。这意味着内存可能会很快收集垃圾。但它肯定是分配的。