我知道在创建类的对象时存在内存分配,如下所示:
测试t =新测试(); t.method1();
但我也可以如下调用mehtod1:
new Test()。method1();
因此,在调用method1的第二种方式中,是否分配了内存。因为显然我不是在这里创造一个对象。
由于
答案 0 :(得分:2)
您的问题的答案是是。代码new Test()
创建一个对象,该对象恰好是Test
类的实例。无论是否将变量分配给变量,都会在堆上为创建的每个对象分配内存。
当然,就像堆上的所有内存一样,只要在范围内没有对该对象的引用,该内存就可用于垃圾收集。如果不将其分配给变量,则表达式new Test()
创建的引用一旦使用就会超出范围。这意味着内存可能会很快收集垃圾。但它肯定是分配的。