1.區別於面向過程
- 面向過程重點在於設計方法
- 面向對象將數據和方法耦合在一塊兒構成對象.
2.類的抽象與封裝
- 類的抽象: 將類的實現和類的使用分離
- 類的封裝: 實現的細節被封裝而且對用戶隱藏
3.類的關係(關聯,聚合以及組合)
1.關聯
- 常見的二元關係,描述兩個類之間的活動
- 多樣性: 放置於類的邊上,用於給定UML圖中關係所涉及的類的對象數(*表明無範圍).
eg. 學生選組課程爲學生類和課程類之間的關聯
2.彙集和組合(簡單起見,能夠不區分而都將其稱爲組合)
- 彙集是關聯的一種特殊形式,表明了兩個對象之間的歸屬關係.其對has-a關係進行建模.
- 全部者對象:彙集對象,其類:彙集類.
- 從屬對象:被彙集對象,類:被彙集類.
- 組合: 被彙集對象的存在依賴於彙集對象. eg.名字依附於人,若人亡則名字亦不存在
- 彙集: 被彙集對象存在不依賴於彙集對象. eg.地址不依附於人,其客觀存在,人亡與否不影響.
4.基本數據類型做爲對象處理
- 基本數據類型值不是對象,可是能夠用Java API中的包裝類來包裝成一個對象.
- java.lang包裏爲基本數據類型提供了Boolean, Character, Double, Float, Byte, Short, Integer, Long等包裝類
- 數值包裝類基本都提供了xxxValue()的方法將對象轉換爲基本類型值
- 既能夠用基本數據類型也可用字符串類構造包裝類. eg.new Double("5.44");
- Java能夠根據上下文自動地將基本類型與包裝對象進行轉換.
注意事項:java
- 包裝類沒有無參構造方法
- 包裝類的實例不可改變(一旦建立再也不改變)
簡介正則表達式
- 每一個數值包裝類都有常量MAX_VALUE, MIN_VALUE對應其基本數據類型的最大最小值
- 每一個數值包裝類都包含各自方法doubleValue(),floatValue(),xxxValue()...返回包裝對象對應的xxx值
- 包含compareTo方法用於比較兩個數值(1,0,-1)
- 有一個有用的靜態方法valueOf(String s),該方法建立一個對象並將其初始化爲指定字符串表示的值
- 可能含有parseXxx(String s)方法將一個xxx數值字符串s轉化爲一個xxx值
基本類型和包裝類類型之間的自動轉換數組
- 裝箱:基本數據類型值轉換爲包裝類對象的過程
- 拆箱:反之
5.BigInteger類和BigDecimal類
- 當進行大精度/大數運算時可用BigInteger類和BigDecimal類來進行
- 建立方法newBigXxxx(String s)
- 常見方法: add, subtract, multiple, divide, remainder
6.String方法
- String對象不可改變-字符串一旦建立,內容不能再改變(改變或爲建立了新得對象)
1.駐留字符串
eg.併發
String s1 = "Java';
String s2 = new String("Java);
String s3 = "java;
則s1==s3且s1!=s2
s1,s3指向了相同的主流字符串"Java",而s1與s2爲不一樣的字符串對象app
2.替換和拆分
- 替換: replace(); String
- replace, replaceFirst, replaceAll
- 拆分: split(); String
- 以上都爲返回一個源自元素是字符串的新字符串(組)
3.使用模式匹配,替換和拆分
- 正則表達式(regex): 爲一個字符串,用於描述匹配一個字符串集的模式.能夠經過指定某個模式來匹配,替換和拆分一個字符串.
- matches(String s): s爲正則表達式. 替換和拆分中的參數也可用正則表達式代替
4.字符串和字符數組之間的轉換
- 字符串轉換爲字符數組: toCharArray();
eg. char[] ch = s.toCharArray();
- 字符數組->字符串: 構造方法或方法valueOf();
eg. String s = String.valueOf(ch);
5.將字符和數值轉化爲字符串
- String str = xxx + "";
- valueOf()方法
6.格式化字符串
-
String.format(format, item1, item2, ...);ide
-
與printf相似. printf顯示而format返回
eg.ui
String s = String.format("%7.2f%6d%-4s", 45.556, 14, "AB");
顯示: ..45.56....14AB.. (..表示空格)設計
7.StringBuilder與StringBuffer
- 相似於String類,但其能夠改變
- 兩者主要區別在於StringBuffer類中修改緩衝區的方法是同步的(只有一個任務被容許執行該方法)(適用於多任務併發訪問); 單任務訪問時StringBuilder更有效
- 構造方法:StringBuilder(),(capacity: int),(s: String)
- 方法: 30多個用於管理該構建起以及修改該構建器字符串的方法.
1.修改
java.lang.StringBuilder |
做用 |
append(data: char[]) : StringBuilder |
追加一個字符數組 |
append(data: char[], offset: int, len: int) :... |
追加data中的指定子數組 |
append(v: primitiveType): ... |
將一個基本類型值做爲字符串追加 |
append(s: String) |
追加一個字符串 |
delete(startIndex: int, endIndex: int):... |
刪除指定範圍的字符 |
deleteCharAt(index: int):... |
刪除給定下標的字符 |
insert(index: int, data: char[], offset: int, len: int):... |
給定下標爲止插入數組data的子數組 |
insert(offset: int, data: char[]):... |
向offset位置插入data |
insert(offset: int, b: primitiveType):... |
向指定位置插入一個轉換爲字符串的值 |
insert(offset: int, s:String):... |
offset位置插入字符串 |
replace(startIndex: int, endIndex: int, s:String) |
指定位置替換爲給定字符串 |
reverse() |
倒置 |
setCharAt(index: int, ch: char) |
指定下標設置爲新得字符 |
2.toString, capacity, length, setLength, charAt方法
注:capaciy爲容量,length爲長度code