原文鏈接http://zhhll.icu/2020/04/26/java%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80%E4%B9%8B%E5%AF%B9%E8%B1%A1/
操作物件
所有編程語言都會操作記憶體中的元素,java通過物件的參考來操作物件
創建一個String參考,代碼示例:
String s;
上面的代碼只是創建了一個String物件的參考,變數s沒有進行初始化,并沒有指向任何物件,java中使用new來創建物件,代碼示例:
String s = new String("abc");
基本資料型別
boolean、char、byte、short、int、long、float、double這些都是基本資料型別,基本資料型別不需要使用new關鍵字來創建物件,直接存盤值,存盤在堆疊記憶體內,java直接確定了每種基本型別的記憶體占用大小,
| 基本型別 | 大小 | 范圍 |
|---|---|---|
| boolean | ||
| char | 16bits | 0~2^16 -1 |
| byte | 8bits | -27~27-1 |
| short | 16bits | -215~215-1 |
| int | 32bits | -231~231-1 |
| long | 64bits | -263~263-1 |
| float | 32bits | -231~231-1 |
| double | 64bits | -263~263-1 |
資料存盤
記憶體分配
- 暫存器 位于CPU內部,最快的存盤區域
- 堆疊記憶體 存在于RAM(隨機訪問存盤器)記憶體區域內,可通過堆疊指標獲得處理器的直接支持,堆疊指標下移分配記憶體,上移釋放記憶體,速度僅次于暫存器,創建程式時,java系統必須準確地知道堆疊內保存的所有項的生命周期,物件參考存盤在堆疊記憶體中,但物件保存在堆記憶體中,占中存盤方法幀和區域變數,堆疊比堆小,也不會在多個執行緒之間共享,而堆被整個JVM的所有執行緒共享
- 堆記憶體 也存在RAM(隨機訪問存盤器),所有java物件都存在其中,與堆疊記憶體不同,編譯器不需要知道物件必須在堆記憶體上停留多長時間,創建一個物件時,只需new關鍵字實體化物件,執行代碼時,會自動在堆中進行記憶體分配,代價是:分配和清理堆記憶體要比堆疊記憶體需要更多的時間,
- 常量存盤 常量值直接放在程式代碼中,因為他們永遠不會改變
- 非RAM存盤 資料完全存在于程式之外,在程式未運行以及脫離程式控制后依然存在
兩個示例:- 序列化物件:物件被轉換為位元組流,通常被發送到另一臺機器
- 持久化物件:物件被放置在磁盤上,即使程式終止,資料依然存在,這些存盤的方式是將物件轉存于另一個介質中,并在需要時恢復成常規的、基于RAM的物件,Java為輕量級持久化提供了支持,
創建類
使用class關鍵字來描述一種新的物件,在class關鍵字的后面緊跟類的名稱,
class MyClass {
}
上例中,引入了一個新的型別,我們可以通過new關鍵字來創建一個這種型別的物件,
MyClass myClass = new MyClass();
在方法中可以存在兩種元素:方法和欄位
多型
實作多型的機制是父類或介面定義的參考變數可以指向子類或具體實作類的實體變數,而程式呼叫的方法是在運行期才動態系結的
多型主要分為參考多型和方法多型
-
參考多型:父類參考指向子類物件,也可以指向本類物件
-
方法多型:創建本類物件時,方法呼叫為本類方法;創建子類物件時,方法呼叫為子類重寫的方法或者子類繼承的方法
多型的必要條件:繼承,重寫
由于本身的博客百度沒有收錄,博客地址http://zhhll.icu
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/243122.html
標籤:Java
上一篇:【大廠面試】位元組跳動、京東等大廠面試題分享,已拿位元組offer~
下一篇:PHP設計模式之橋接模式
