標籤:自動 ble 過程 地址 tab 運行 ges static 相關
基礎資料型別 (Elementary Data Type):
| 基礎資料型別 (Elementary Data Type) |
大小 |
範圍 |
預設值 |
| 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 |
引用資料類型:
類、介面類型、數群組類型、枚舉類型、註解類型。
區別:
基礎資料型別 (Elementary Data Type)在被建立時,在棧上給其劃分一塊記憶體,將數值直接儲存在棧上。
引用資料類型在被建立時,首先要在棧上給其引用(控制代碼)分配一塊記憶體,而對象的具體資訊都儲存在堆記憶體上,然後由棧上面的引用指向堆中對象的地址。
例如,有一個類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釋放。其特點是使用靈活,空間比較大,但容易出錯
棧區: 由編譯器自動分配釋放,儲存局部變數,棧上的內容只在函數的範圍記憶體在,當函數運行結束,這些內容也會自動被銷毀,其特點是效率高,但空間大小有限
文字常量區: 常量字串就是放在這裡的。 程式結束後由系統釋放。
程式碼區:存放函數體的二進位代碼。
java記憶體模型