-3
我知道有存儲器分配當我們創建了一個類的一個對象,如下所示:調用的類,而無需創建對象
測試T =新測試(); t.method1();
但我可以叫mehtod1如下太:
新的測試()方法1()。
因此,在調用method1的第二種方式中,是否有內存分配。因爲顯然我不是在這裏創建一個對象。
感謝
我知道有存儲器分配當我們創建了一個類的一個對象,如下所示:調用的類,而無需創建對象
測試T =新測試(); t.method1();
但我可以叫mehtod1如下太:
新的測試()方法1()。
因此,在調用method1的第二種方式中,是否有內存分配。因爲顯然我不是在這裏創建一個對象。
感謝
的回答你的問題是是。代碼new Test()
創建一個對象,該對象恰好是Test
類的一個實例。內存分配在的堆上,每創建一個對象,無論是否將其分配給變量。
當然,就像堆中的所有內存一樣,只要在範圍內的任何地方沒有對該對象的引用,該內存就可用於垃圾收集。如果您未將其分配給變量,則表達式new Test()
創建的參考一旦使用就會超出範圍。這意味着內存可能會很快收集垃圾。但它肯定是分配的。
顯然你**是**創建一個對象。你只是沒有把它分配給一個變量,而是一個對象是由構造函數上的新調用創建的。 –
'new'運算符分配內存,並且仍然使用'new'。如果它沒有分配內存,你認爲'this'在'method1'方法中引用了什麼? – Andreas
你不是調用類,而是調用類的方法。您可以調用但不創建對象的唯一方法是靜態方法。 – Lothar