日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java之空间分配

發布時間:2025/3/20 java 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java之空间分配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ?編寫Java程序不可避免的就會創建對象,因此早晚都會釋放掉它,從堆、棧、范圍、構造器、超極構造器、空間引用等進行介紹。在Java中,程序較為在乎內存中的兩種區域:對象的生存空間堆(heap)和方法以及變量的生存空間棧(stack).

1)實例變量

實例變量是被聲明在類中而不是方法中。它們代表每個獨立對象的“字段”,實例變量存在于所屬的對象中

public class Duck{int size;//每個Duck對象都有獨立的size }

還有一種情況是,在一個類中聲明了一個實例變量,如:

public class CellPhone{//在類CellPhone中聲明一個私有的Antenna類對象antprivate Antenna ant; }

當新建一個對象帶有對象引用的變量時,此時是否需要保留對象帶有的所有對象的空間呢?當然是否定的,無論如何,Java會留下空間給實例變量的值,但是引用變量的值并不是對象本身,所以若CellPhone帶有Antenna,Java只會留下Antenna引用率變量而不是對象本身所用到的空間,因此如果聲明變量但是沒有給其賦值,則只會留下變量的空間:

private Antenna ant;

直到引用變量被賦值給一個新的Antenna對象才會在堆上占有空間

private Antenna ant = new Antenna();

實例變量有默認值,默認值為0/0.0/false,引用的默認值是null

2)局部變量

局部變量和方法的參數都是被聲明在方法中,它們是暫時的,且聲明周期只限于方法被放在棧上的這段期間(也就是方法調用到執行完畢為止)

public void foo(int x){int i = x + 3;boolean b = true;//參數x和變量i,b都是局部變量 }
  • 實例變量是聲明在類中方法之外的地方,存在于對象所屬的堆空間上
  • 局部變量聲明在方法或者方法的參數上
  • 所有局部變量都存在于棧上相對應的堆棧塊中
  • 對象引用變量與primitive主數據類型變量都是放在棧上
  • 不管實例變量或者局部變量,對象本身都會在堆上

總結

以上是生活随笔為你收集整理的Java之空间分配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。