Java语言程序设计(基础篇) 第十章 面向对象思考
第十章 面向對象思考
10.2 類的抽象和封裝
1.類的抽象是指將類的實現和類的使用分離開,實現的細節被封裝并且對用戶隱藏,這被稱為類的封裝。
2.從類外可以訪問的方法和數據域的集合以及預期這些成員如何行為的描述,合稱為類的合約(class's contract)。
3.實現的細節經過封裝,對用戶隱藏起來,這稱為類的封裝(class encapsulation)。
?
10.3 面向對象的思考
面向過程的范式重點在于設計方法。面向對象的范式將數據和方法耦合在一起構成對象。使用面向對象范式的軟件設計重點在對象以及對對象的操作上。
10.4 類的關系
為了設計類,需要探索類之間的關系。類中間的關系通常是關聯、聚合、組合以及繼承。
10.4.1 關聯
1.關聯是一種常見的二元關系,描述兩個類之間的活動。
2.關聯中涉及的每個類可以給定一個多重性(multiplicity),放置在類的邊上用于給定UML圖中關系所涉及的類的對象數。
10.4.2 聚集和組合
1.聚集是關聯的一種特殊形式,代表了兩個對象之間的歸屬關系。聚集建模has-a關系。所有者對象稱為聚集對象,它的類稱為聚集類。而從屬對象稱為被聚集對象,它的類稱為被聚集類。
2.一個對象可以被多個其他的聚集對象所擁有。如果一個對象只歸屬于一個聚集對象,那么它和聚集對象之間的關系就稱為組合(composition)。
?
10.6 示例練習:設計棧類
棧(stack)是一種以“后進先出”的方式存放數據的數據結構。
?
10.7 將基本數據類型值作為對象處理
1.基本數據類型值不是一個對象,但是可以使用Java API中的包裝類來包裝成一個對象。
2.大多數基本類型的包裝類的名稱與對應的基本數據類型名稱一樣,第一個字母要大寫。Integer和Character例外。
3.包裝類沒有無參構造方法。所有包裝類的實例都是不可變的,這意味著一旦創建對象后,它們的內布值就不能再改變。
?
10.8 基本類型和包裝類型類型之間的自動轉換
將基本類型值轉換為包裝類型對象的過程稱為裝箱(boxing),相反的轉換過程稱為開箱(unboxing)。Java允許基本類型和包裝類類型之間進行自動轉換。如果一個基本類型值出現在需要對象的環境中,編譯器會將基本類型值進行自動裝箱;如果一個對象出現在需要基本類型的環境中,編譯器會講對象進行自動開箱。這稱為自動裝箱和自動開箱。
10.9 BigInteger和BigDecimal類
BigInteger類和BigDecimal類可以用于表示任意大小和精度的整數或者十進制數。
?
10.10 String類
String類對象是不可改變的。字符串一旦改變,內容不能再改變。
10.10.1 構造字符串
1.可以用字符串直接量或者字符數組創建一個字符串對象。
String message=new String("Welcome to Java");
String message="Welcome to Java";
2.String變量存儲的是對String對象的引用,String對象里存儲的才是字符串的值。嚴格地講,術語String變量、String對象和字符串值是不同的。但在大多數情況下,它們之間的區別是可以忽略的。為簡單期間,術語字符串將經常被用于指String變量、 String對象和字符串的值。
?
10.10.2 不可變字符串與限定字符串
1.String對象是不可變的,它的內容是不能改變的。
2.因為字符串在程序設計中是不可變的,但同時又會頻繁地使用,所以Java虛擬機為了提高效率并節約內存,對具有相同字符序列的字符串直接量使用同一個實例。這樣的實例稱為限定的(interned)字符串。
?
10.10.3 字符串的替換和分隔
split方法可以從一個指定分隔符的字符串中提取標識。
1 String[] tokens="Java#HTML#Perl".split("#"); 2 for (int i = 0; i < tokens.length; i++) { 3 System.out.print(tokens[i]+" "); 4 } 5 //顯示:Java HTML Perl
?
10.10.4 依照模式匹配、替換和分配
正則表達式(regular expression)(縮寫regex)是一個字符串,用于描述匹配一個字符串集的模式。
?
10.10.5 字符串與數組之間的轉換
1.字符串不是數組,但是字符串可以轉換成數組,反之亦然。為了將字符串轉換成一個字符數組,可以使用toCharArray方法。
char[] chars="Java".toCharArray();
?
2.為了將一個字符數組轉換成一個字符串,應該使用構造方法String(char[])或者方法valueOf(char[]);
1 String str=new String(new char[]{'j','a','v','a'}); 2 String str1=String.valueOf(new char[]{'j','a','v','a'});
10.10.6 將字符和數值轉換成字符串
可以使用Double.parseDouble(str)或者Integer.parseInt(str)將一個字符串轉換為一個double值或者一個int值,也可以使用字符串的連接操作符將字符或者數字轉換成字符串。另外一種將數字轉換為字符串的方法時使用重載的靜態valueOf方法。該方法可以用于將字符和數值轉換成字符串。
?
10.10.7 格式化字符串
String類包含靜態方法format方法,它可以創建一個格式化的字符串。
?
10.10 StringBuilder和StringBuffer類
1.一般來說,只要使用字符串的地方,都可以使用StringBuffer/StringBuilder類。StringBuffer/StringBuilder類比String類更靈活。可以給一個StringBuffer或StringBuilder中添加、插入或追加新的內容,但是String類一旦創建,它的值就確定了。
2.除了StringBuffer中修改緩沖區的方法是同步的,這意味著只有一個任務被荀彧執行方法外,StringBuilder類與StringBuffer類是很相似的。如果是多任務并發訪問,就使用StringBuffer,因為這種情況下需要同步以放置StringBuffer崩潰。而如果是單任務訪問,使用StringBuilder會更有效。StringBuffer和StringBuilder中的構造方法和其他方法幾乎是完全一樣的。
?
轉載于:https://www.cnblogs.com/yang-young-young/p/6377148.html
總結
以上是生活随笔為你收集整理的Java语言程序设计(基础篇) 第十章 面向对象思考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongo索引
- 下一篇: java基础篇7----java.uti