第五章,面向對象基礎篇
阿新 • • 發佈:2017-11-09
charat 對象 avg buffer turn 設計 矛盾 ont 強調
5.3 封裝性
? 為了解決屬性必須封裝且又必須訪問的矛盾,只要是被封裝的屬性,必須通過setter和getter方法設置和取得。
? 為前面類的私有屬性加上getter和setter方法
Public void setAge(int a){ Age = a; } Public int getAge(){ Return age; }
setter方法可以加上檢測代碼檢測輸入的數據是否合法。
5.4構造方法
Person per = null;聲明對象時不調用構造方法。 Per = new Person();實例化對象時調用構造方法。
? 構造方法也是可以重載的。只要每個構造方法的參數類型或參數個數不同,即可實現重載。
5.5 匿名對象
匿名對象只在堆內存中開辟空間,而不在棧內存的引用。
new Person("cathy",30).tell(); //匿名對象
5.6 實例講解
class Student{ private String stuno; public Student(){ public Student(String stuno){ this.setStuno(stuno); } } public float sum(){ return math+english; } public float avg(){ return this.sum/3; }
}
5.7 String
? ==是用來進行地址比較的
Str2 str3指向同一個空間,他們的地址值就是相同的。
內容比較用equals,
str2.equals(str3)
“hello”.equals("hello"),一個字符串可以調用string類中的方法,說明一個字符串就是一個string類的匿名對象。
? String str1 = “hello”;
使用這種方式定義字符串有一個好處,就是如果一個字符串已經被一個名稱所引用,則以後再有相同的字符串聲明時,就不會再重新開辟空間。
String str2 = “hello”; str2==str1.
java中有個字符串池。這種設計叫共享設計,設計思路是,對象池中保存多個對象,新實例化的對象如果已經在池中定義了,則不再重新定義,指向已存在的實例空間。
使用new關鍵字,無論如何都會重新開一個空間。
對於字符串,就直接賦值,不要采用new。
? 字符串的內容一旦聲明不可改變。
非要改變就用stringbuffer類。
? String (char[] value)字符數組變字符串。這是一個構造方法 char[] toCharArray() 字符串變字符數組。這是一個普通方法 char charAt(int index)字符串中取出指定位置字符 int length()字符串長度 String trim() 清除左右兩端空格 String[] split(String regex) 按指定字符串拆分
IO操作中經常會遇到字符串與byte數組或char數組之間的轉換操作。
? length取得數組的長度。
length()取得字符串的長度。
5.8
5.9 this 關鍵字
? 可以使用this強調本類中的方法
表示類中的屬性
public Person(String name){ name=name; } Vs. public Person(String name){ This.name=name; }
調用本類的構造方法?????????
表示當前對象
第五章,面向對象基礎篇