Android基礎筆記

來源:互聯網
上載者:User

標籤:tor   不可用   android基礎   分區   單鏈表   dict   代碼   回收對象   bsp   

Java基礎
物件導向三個特徵
封裝 繼承 多態

多態
定義 允許不同類的對象對同一訊息做出響應
技術 動態綁定 執行期間判斷所引用對象的實際類型 根據實際類型調用相應方法
作用 消除類型之間的耦合關係
條件 繼承 重寫 父類引用指向子類對象
好處 擴充 替換 介面 靈活 簡化

介面意義
規範 擴充 回調

抽象類別意義
為其它子類提供一個公用類型
封裝子類中重複定義的內容
定義抽象方法 子類中有不同的實現但是定義是一致的

抽象類別介面區別
預設方法 抽象類別可以有預設方法實現 介面中沒有
實現方式 抽象類別extends 介面 implements
構造器 抽象類別中可以有 介面沒有
和正常類區別 介面不可執行個體化 介面是不同的類型
存取修飾詞 介面預設public 其它不能
多繼承 一個子類可以存在多個介面

Override和Overload區別
Override 重寫 子類對父類同一方法的重新定義
Overload 重載 定義一個與已定義方法名稱相同但簽名不同的新方法

父類的靜態方法能否被子類重寫
不能 稱為隱藏

內部類作用

switch能否用String做參數
Java7前 只支援byte short char int及對應封裝類 Enum
Java7 支援String

九種基礎資料型別 (Elementary Data Type)
boolean Boolean
byte 1 Byte
short 2 Short
int 4 Integer
long 8 Long
float 4 Float
double 8 Double
char 2 Character
void Void

 

Java集合
Collection
AbstractList
Vector
ArrayList
AbstractSequentialList
LinkedList
Map
AbstractMap
HashMap
TreeMap
Dictionary
Hashtable
AbstractSet
HashSet
TreeSet
Vector
基於數組實現
很多方法加入synchronized同步語句 保證安全執行緒
允許元素為null
現在基本不使用

ArrayList
基於數組實現
非安全執行緒 只能單線程環境使用
允許元素為null
尋找效率高 插入刪除需要移動大量元素 效率低

LinkedList
基於雙向迴圈鏈表實現 可做鏈表 棧 隊列 雙端隊列
非安全執行緒 只能單線程環境使用
允許元素為null
插入刪除效率高 尋找效率低

HashMap
基於雜湊表實現 每一個元素是一個key-value 內部通過單鏈表解決衝突
非安全執行緒
key-value都允許為空白

TreeMap
基於紅/黑樹狀結構實現 特殊二叉排序樹
key不能為null
查詢 插入 刪除都沒有HashMap效率高 一般需對key排序才用

Hashtable
基於雜湊表實現 1.0引入
安全執行緒
key-value都不允許為空白

HashSet
通過Map中的HashMap實現
TreeSet
通過Map中的TreeMap實現

JVM
四種引用
強引用 new記憶體空間不足JVM不會回收
軟引用 記憶體空間不足 JVM會回收
弱引用 JVM一旦發現 無論當前記憶體空間是否充足都會回收
虛引用 它指向的對象回收時 它會加入到引用隊列中 由此可知它指向的對象何時銷毀

分區
線程共用
Java堆 存放所有對象執行個體和數組
方法區 存放已被虛擬機器載入的類資訊 常量 靜態變數 即時編譯器編譯後的代碼
線程私人
程式計數器 當前線程所執行位元組碼的行號指標
虛擬機器棧 Java方法執行的記憶體模型
每個方法被執行都會建立一個棧幀
棧幀用於儲存局部變數表 運算元棧 動態連結 方法返回地址 一些額外附加資訊
本地方法棧 與虛擬機器棧類似 為native方法服務

分區例子
Object obj = new Object()
obj作為參考型別儲存在虛擬機器棧中
該引用的執行個體化對象儲存Java堆中
該物件類型資料的地址資訊儲存在方法區

記憶體流失
分配出去的記憶體沒有回收回來 失去了對該記憶體地區的控制 造成了資源浪費
記憶體溢出
程式所需要的記憶體超出了系統所能分配記憶體的上限

記憶體回收判斷方法
引用計數
對象有引用計數器加1 引用失效減1 為0的對象不可被使用
很難解決對象循環參考的問題

引用鏈
通過一系列GC Roots的對象作為起始點
從這些節點向下搜尋所走過的路徑稱為引用鏈
當一個對象到GC Roots無任何引用鏈相連 則證明該對象不可用

記憶體回收演算法
標記清除法
標記所有需要回收的對象 標記完成後統一回收
標記和回收效率不高 產生大量記憶體片段

複製演算法
將記憶體劃分為大小相等兩塊 每次只使用其中一塊 當一塊使用完了
將還存活的對象複製到另一塊上面 已使用的一次性清理掉

標記整理 適合老年代
標記所有需要回收對象 讓所有存活對象都向一端移動
然後直接清理掉邊界以外的記憶體

Android基礎筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.