[英]What happens in memory if we just declare a variable without initialization in java?
[英]Memory allocation when just declare a variable of a class type
在Java中,當我們只聲明一個類類型的變量時,只會創建一個引用(未為該對象分配內存)。 是將引用t保存在將在堆上創建空間的某個地方嗎? 或者如果我錯了,那么當我們只聲明變量時,究竟在內存中發生了什么?
Test t;
在Java中,當我們只聲明一個類類型的變量時,只會創建一個引用(未為該對象分配內存)。
這是對的。
是否將引用t保留在將在堆上創建空間的某處?
答案取決於聲明出現的上下文。 如果所述聲明是對象的一部分(即t
是一個字段 ),那么將從堆中分配用於引用的空間,以及包含該字段的對象其余部分的空間。 否則,將在JVM的堆棧框架中分配用於引用的空間。
聲明變量時:
Test t;
引用留有空間(固定數量,不取決於類中的成員數量)。 實例化變量時,請使用new關鍵字:
t = new Test();
然后在堆上留出該變量的空間,然后t
引用該空間。 它必須足夠大以容納Test
所有成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.