1.堆和棧
JAVA中的棧和堆
Java方法區、堆、棧、本地方法區及新生代、老年代、元空間整合
JAVA在程序運行時,在內存中劃分5片空間進行數據的存儲。分別是:1:寄存器。2:本地方法區。3:方法區。4:棧。5:堆。
棧:基本數據類型、局部變量都是存放在棧內存中的,用完就消失。存取速度僅次於寄存器。
堆:new創建的實例化對象及數組,是存放在堆內存中的,用完之後靠垃圾回收機制不定期自動消除。存取速度較慢。
2.static
特點:
- static修飾的成員被所有對象共享
- static優於對象存現,因爲static的成員隨着類的加載已經存在了
使用:
- 靜態變量:用於所有對象都只能讀的不變量
- 靜態方法:不需要訪問非靜態的成員變量的方法
3. 單例設計模式
定義:一個類在內存中的對象唯一性
實現:
- 私有化構造函數
- 使用new在本類中創建一個本類的對象
- 定義一個返回該類對象的公有方法。
4. 抽象類和接口
抽象類和接口有什麼區別
相同點:都是不斷向上抽取而來的
不同點:
- 抽象類需要被繼承,只能是單繼承
接口需要實現,可以是多實現 - 抽象類中可以定義抽象方法和非抽象方法
接口中只能定義抽象方法,必須由子類實現 - 抽象類的繼承,是is a 關係,實際是定義了該體系的基本共性內容
接口的實現是like a關係,實際是定義了體系額外的功能
5.final
- final是一個修飾符,可以修飾類、方法、變量
- final修飾的類不可以被繼承
- final修飾的方法不可以被覆蓋
- final修飾的變量是一個常量,只能賦值一次(全部字母大寫,多個單詞“_”連接)
6. 多態
定義:一個對象對應着不同的類型。比如貓既有貓的形態,又具有動物的形態。
體現:父類或者接口的引用指向其子類的對象。
Animal c_animal = new Cat(); //向上轉型,將子類的特性隱藏,無法使用子類特有方法
Cat c_cat = Cat(c_animal); //向下轉型,使用子類的特有方法
// 注意:自始至終都是子類對象在做着類型變化