Android是基於java的,因此,Android的學習就必須先弄懂java。 java
本人新手,認爲在android開發中經常使用到的java除了普通的String類和麪向對象:好比關鍵字this,static,構造函數,尤爲要明白三個方面: android
1,java的多線程 算法
2,IO流文件的讀取 數組
3,集合 安全
一:先來講java的多線程: 多線程
線程與進程的關係:進程是一個運行中的程序,它能夠有不少線程,線程時cpu調度和分派的基本單位,容許多個線程併發執行能夠提升運行效率: 併發
由於重點是Android,因此這裏只簡單介紹一下: 函數
多線程的實現經常使用的兩種方法: 學習
第一種:本身建立一個類(mThread)繼承Thread類;重寫裏面的run方法,這個run方法裏面就是你的新的線程要執行的代碼;須要調用這個新的線程的時候:就new一個本身建立的類的對象出來,new mThread().start()開啓線程 this
第二種:建立一個類實現Runnable類,重現裏面的run方法,裏面也是要執行的代碼,new Tread(mRunnable).start();開啓新的線程(mRunnable是建立的子類的對象)
關於線程的操做:
sleep():線程睡眠一段時間
join():當前線程等待,其餘線程執行完再指向當前線程
setName();getName():給線程命名,獲取當前線程名
getCurrentThread():獲取當前線程
同步:什麼是同步?在多線程一塊兒訪問統一資源時有可能出現線程安全問題:這時候就可使用同步:保證同一時間該資源只有一個線程在訪問
同步代碼塊與同步方法:
將須要同步的代碼塊放在synchronized(){}代碼塊中,()裏面指定鎖對象
方法:方法須要同步能夠在方法前加上synchronized修飾
二:IO流文件讀取:
IO流的方面仍是不少的,這裏不作詳細介紹,在Android中和java中沒大的區別
三:集合:
Android中經常使用集合:List和Map
Lsit:有存儲順序,能夠重複
ArrayList:數組結構 查找快,增刪慢
LinkedList:鏈表結構 增刪快,查找慢
存儲,添加:add();
獲取索引位置上的對象get(int index)
集合的遍歷有三種方法:
for循環: 循環size()次, 每次調用get(int)方法獲取一個元素.
迭代器: 使用iterator()方法獲取一個迭代器(Iterator對象), 調用hasNext()方法判斷是否包含下一個元素, 調用next()方法獲取元素.
加強for循環: for (類型 變量名 : 容器) { 循環體 }, 容器長度是多少循環體就執行多少次, 變量每次引用容器中的一個元素.
相關代碼
//加強for循環, for (類型 變量名 : 容器) { 循環體 }
private static void iterate1(List list) { for (Object obj : list) System.out.println(obj); }
//普通循環
private static void iterate2(List list) { for (int i = 0; i < list.size(); i++) System.out.println(list.get(i)); }
//迭代器循環
private static void iterate3(List list) { Iterate iter = list.iterate(); while(iter.hasNext()){ System.out.println(list.get(i));} }
Map:
Map是以鍵值對的方式存在的Map<key,value>
Map經常使用的方法
put(K key, V value)
存儲一個鍵值對, 若是鍵在集合中存在, 值將會覆蓋原有值, 而且返回原有值.
get(Object key)
根據鍵獲取值, 若是不存在, 返回null
remove(Object key)
根據鍵刪除值, 並將值返回, 若是不存在, 返回null
boolean containsKey(Object key)
判斷指定的鍵對象是否存在
Map集合的遍歷 *** keySet: Map集合的keySet()方法能夠獲得一個全部鍵對象組成的Set集合 遍歷這個Set集合能夠獲得每個鍵對象 再根據鍵對象便可獲取值 *** entrySet: Map集合的entrySet()方法能夠獲得一個全部Entry對象(鍵值對)組成的Set集合 遍歷這個Set集合能夠獲得每個Entry對象 再使用Entry的getKey()方法和getValue()方法獲取鍵和值
Hashtable: 和HashMap原理相同, 都是使用哈希算法去重複. 線程安全, 效率略低. 鍵和值都不容許爲null