標籤:
1. How to understand 物件導向編程
站在分類學家的角度去考慮問題!是的,這個世界是由動物、植物等組成的。動物又分為單 細胞動物、多細胞動物、哺乳動物等等,哺乳動物又分為人、大象、老虎……就這樣的分下去了!
現在,站在抽象的角度,我們給“類”下個定義吧!我的意思是,站在抽象的角度,你回答我“什麼是人類?”首先讓我們來看看人類所具有的一些特徵,這個 特徵包括屬性(一些參數,數值)以及方法(一些行為,他能幹什麼!)。每個人都有身高、體重、年齡、血型等等一些屬性。人會勞動、人都會直立行走、人都會 用自己的頭腦去創造工具等等這些方法!人之所以能區別於其它類型的動物,是因為每個人都具有人這個群體的屬性與方法。“人類”只是一個抽象的概念,它僅僅 是一個概念,它是不存在的實體!但是所有具備“人類”這個群體的屬性與方法的對象都叫人!這個對象“人”是實際存在的實體!每個人都是人這個群體的一個對 象。老虎為什麼不是人?因為它不具備人這個群體的屬性與方法,老虎不會直立行走,不會使用工具等等!所以說老虎不是人!
由此可見-------類描述了一組有相同特性(屬性)和相同行為(方法)的對象。在程式中,類實際上就是資料類型!例如:整數,小數等等。整數也有 一組特性和行為。面向過程的語言與面相對象的語言的區別就在於,面向過程的語言不允許程式員自己定義資料類型,而只能使用程式中內建的資料類型!而為了模 擬真實世界,為了更好的解決問題,往往我們需要建立解決問題所必需的資料類型!物件導向編程為我們提供瞭解決方案。
2. Java語言基礎
java程式由包和類組成,聲明成員(全域)變數----類的屬性,方法中的屬性是局部變數。Java語言嚴格區分大小寫。
常量聲明的關鍵字是final
//為單行代碼注釋
/* */為之間所有的內容注釋 多行之間可以嵌套單行的流程式控制制語句與C#、C相同
字串都是放在“”裡面的, String s=new String(“good”) 字串的操作現用現查
數組的操作
fill用來填充替換數組中的元素 Arrays類中,形式Arrays.fill 使用類之前需要 import java.util.Arrays;
排序 Arrays.sort
複製 Arrays.copyOf copyOfRange
查詢 binarySearch 索引之前最好先排序 也可以在制定的位置檢索
數組排序演算法
(1)冒泡排序 (2)直接選擇排序 (3)反轉排序http://i.cnblogs.com/EditPosts.aspx?postid=4668213&update=1
http://i.cnblogs.com/EditPosts.aspx?postid=4668213&update=1
3. Java 類和對象
物件導向程式具有封裝性、繼承性和多態性。裝是講對象的屬性和行為close起來,其載體就是類。繼承性主要利用特定對象之間的共有屬性。將父類對象應用於子類的特徵就是多態。抽象類別不能執行個體化對象,多態類中,父類通常會被定義為抽象類別,給出一個方法的標準,不給出實現的具體流程。一般,將抽象類別定義為介面,由抽象方法組成的集合就是介面。
類是封裝對象的屬性和行為的載體,對象的屬性以成員變數的形式存在,方法以成員方法的形式存在
對象的建立就是通過構造方法完成的,每當類執行個體化一個對象時,類都會自動調用構造方法,其沒有傳回值,名稱要與本類的名稱相同。
對象的建立:new關鍵字 每執行個體化一個對象就會自動調用一次構造方法,建立對象的過程。
在類中可以利用方法來實現對成員變數的隱藏,設定變數方法setVariable(),擷取變數方法getVariable()
類的構造方法:與類同名的方法,對象的建立就是通過構造方法完成的,每當類執行個體化一個對象,類都會自動調用構造方法。
4. 數字格式化處理
DecimalFormat用于格式化十進位數字,將一些數字格式化位整數、浮點數、科學計數法和百分數等。
Math各種數學運算及產生隨機數 還有random類
java.math.BigIntegar/BigDecimal大數字操作
5. 類的介面、整合和多態
extends關鍵字來標識兩個類的繼承關係 用super關鍵字調用父類的構造方法和成員方法。
物件類型的向上和向下轉換
使用instanceof操作符判斷物件類型(向下轉型之前需要做個判斷)
方法的重載:構造方法只有一個名稱,如果希望以不同的方式來執行個體化對象,就需要使用多個構造方法來完成。同一個類中允許同時存在一個以上的同名方法,只要這些方法的參數個數或類型不同即可。
多態:父類和子類,子類不同的通用方法可以在父類中實現,new個子類的對象調用父類的方法實現相應的功能。
抽象類別與介面:解決實際問題時,一般將父類定義為抽象類別,使用這個父類進行繼承與多態處理。越往上的類別越抽象,多態機制中,應不需要將父類初始化對象,需要的只是子類對象。因此設定抽象類別不可以執行個體化對象,public abstract class ××{abstract void 定義抽象類別方法()},實際上抽象類別除了被繼承之外沒有任何意義。
繼承抽象類別的所有子類需要將抽象類別中的抽象方法覆蓋,每個子類都重寫抽象類別方法,但是代碼會冗餘,父類局限性也很大,出現了介面的概念。
介面是抽象類別的延伸,interface 一個類實現一個介面可以用implements關鍵字 ,使用介面還可以多重繼承。
6. 異常處理
當某一個方法中發生錯誤時,這個方法會建立一個對象,傳遞給正在啟動並執行系統,就是異常對象。
捕捉異常try-catch 和finally三個部分組成
7. 集合類
java.util中提供了一些集合類,也稱為容器,數組的長度是固定的,而集合的長度是可變的;此外,數組用來存放基本類型的資料,集合用來存放對象的引用。Collection介面(Set List介面),常用方法有add remove isEmpty iterator size
Collection/ArrayList<String/Integer> list=new ArrayList<>();參考型別
List介面 擷取索引位置 List<E> list=new ArrayList(); /new LinkedList();
Set集合 其中不能包含重複的對象 HashSet TreeSet
Map介面單獨沒有繼承Collection,實作類別通常有HashMap和TreeMap
8. !/O輸入/輸出
永久的儲存建立的資料在磁碟檔案中。
輸入資料流 InputStream父類 輸出資料流OutputStream類
(1) File類
new File(String parent, String child)
FileInputStream和FileOutputStream類 只提供了對位元組或者位元組數組的讀取方法
FileReader和FileWriter類採用字元流 讀取漢字方便
帶緩衝的BufferedInputStream與BufferedOutputStream類 達到效能最佳化
資料輸入輸出資料流 DataInputStream DataOutputStream
Zip壓縮輸入輸出資料流 ZipEntry ZipInputStream ZipOutputStream
JAVA Learning (1)