基本資料型別與引用資料型別

2021-08-16 14:53:49 字數 1420 閱讀 3900

基本資料型別與引用資料型別

基本資料型別:

基本資料型別 大小 範圍 預設值

int(整形) 32 -2147483648~2147483648 0

long(長整形) 64 -9233372036854477808~9233372036854477808 0

float(浮點形) 32 -3.40292347e+38~3.40292347e+38 0.0f

double(雙精度) 64 -1.79769313486231570e+308~1.79769313486231570e+308 0.0d

short(短整型) 16 -32768~32768 0

boolean(布林型) 1 true/false false

char(字元型) 16 『 \u0000 - u\ffff 』 『\u0000 』

byte(位元組型) 8 -128~127 0

引用資料型別:

類、介面型別、陣列型別、列舉型別、註解型別。

區別:基本資料型別在被建立時,在棧上給其劃分一塊記憶體,將數值直接儲存在棧上。

引用資料型別在被建立時,首先要在棧上給其引用(控制代碼)分配一塊記憶體,而物件的具體資訊都儲存在堆記憶體上,然後由棧上面的引用指向堆中物件的位址。

例如,有乙個類person,有屬性name,age,帶有參的構造方法,

person p = new person(「zhangsan」,20);

在記憶體中的具體建立過程是:

1.首先在棧記憶體中位其p分配一塊空間;

2.在堆記憶體中為person物件分配一塊空間,並為其三個屬性設初值」「,0;

3.根據類person中對屬性的定義,為該物件的兩個屬性進行賦值操作;

4.呼叫構造方法,為兩個屬性賦值為」tom」,20;(注意這個時候p與person物件之間還沒有建立聯絡);

5.將person物件在堆記憶體中的位址,賦值給棧中的p;通過引用(控制代碼)p可以找到堆中物件的具體資訊。

靜態區: 儲存自動全域性變數和 static 變數(包括 static 全域性和區域性變數)。靜態區的內容在總個程式的生命週期內都存在,由編譯器在編譯的時候分配。

堆區: 一般由程式設計師分配釋放,由 malloc 系列函式或 new 操作符分配的記憶體,其生命週期由 free 或 delete 決定。在沒有釋放之前一直存在,直到程式結束,由os釋放。其特點是使用靈活,空間比較大,但容易出錯

棧區: 由編譯器自動分配釋放,儲存區域性變數,棧上的內容只在函式的範圍內存在,當函式執行結束,這些內容也會自動被銷毀,其特點是效率高,但空間大小有限

文字常量區: 常量字串就是放在這裡的。 程式結束後由系統釋放。

程式**區:存放函式體的二進位制**。

基本資料型別與引用資料型別

byte short int long float double boolean charstring class sun提供的 system.class sun提供的 student.calss 程式設計師自定義的 user.class 程式設計師自定義的 product.class程式設計師自定...

基本資料型別與引用資料型別

在談深拷貝與淺拷貝之前,我們先來談談js的資料型別,這對接下來了解深拷貝淺拷貝起到一定的作用。棧記憶體棧是自動分配相對固定大小的記憶體空間,而且由系統自動釋放的。棧是線性結構,後進先出。基本資料型別 null undefined number string boolean symbol es6 基本...

基本資料型別 引用資料型別

一 基本資料型別 基本資料型別 number string boolean null undefined symbol es6 基本資料型別是指存放在棧中的簡單資料段,資料大小確定,記憶體空間大小可以分配,它們是直接按值存放的,所以可以直接按值訪問。二 引用資料型別 引用資料型別 object 在j...