Jana 5.類與對象
類與對象
類
類的定義:⑴類是對具有相同屬性和行為的一組對象的抽象與統一描述。是用戶自定義的數據類型。
⑵類的定義包括行為和屬性兩個部分。
⑶屬性以數據表示,行為通過函數實現。
格式:class 類名
{
public:公有數據成員和成員函數;
private: 私有數據成員和成員函數;
protected:保護數據成員和成員函數;
};//類的定於必須以分號結束!
使用類時的註意事項:
⑴類的成員可以是其他類的對象,但不能以類自身的對象作為本類的成員,而類自身的指針和引用可以作為類的成員。
⑵類定義必須以分號“;”結束。
⑶類與結構體的區別:沒有明確指定類成員的訪問權限時,C++結構體的成員是公有的,而類的成員是私有的。
⑷c++類定義的格式:(數據成員私有化,成員函數公有化)
對象:
對象是類的實例或實體。
類與對象的關系,如同C++基本數據類型和該類型的變量之間的關系。
對象的定義格式如下:
類名 對象名1,對象名2,…,對象名n;
定義對象應註意:必須在定義了類之後,才可以定義類的對象。
String類
String對象不可變,也就是說當對象創建完畢之後,該對象的內容(字符序列)是不允許改變的,如果內容改變則會創建一個新的String對象,返回到原地址中。
創建字符串最簡單的方式如下:
1 |
String greeting = "Hello world!" ;
|
在代碼中遇到字符串常量時,這裏的值是"Hello world!",編譯器會使用該值創建一個String對象。
和其它對象一樣,可以使用關鍵字和構造方法來創建String對象。
String類有11種構造方法,這些方法提供不同的參數來初始化字符串,比如提供一個字符數組參數:
1 2 3 4 5 6 7 8 |
public class StringDemo{ public static void main(String args[]){
char [] helloArray = { ‘h‘ , ‘e‘ , ‘l‘ , ‘l‘ , ‘o‘ , ‘.‘ };
String helloString = new String(helloArray);
System.out.println( helloString );
}
}
|
以上實例編譯運行結果如下:
1 |
hello.
|
註意:String類是不可改變的,所以你一旦創建了String對象,那它的值就無法改變了。 如果需要對字符串做很多修改,那麽應該選擇使用StringBuffer & StringBuilder 類。
下面是String類支持的方法,更多詳細,參看Java API文檔:
SN(序號) | 方法描述 |
---|---|
1 | char charAt(int index) 返回指定索引處的 char 值。 |
2 | int compareTo(Object o) 把這個字符串和另一個對象比較。 |
3 | int compareTo(String anotherString) 按字典順序比較兩個字符串。 |
4 | int compareToIgnoreCase(String str) 按字典順序比較兩個字符串,不考慮大小寫。 |
5 | String concat(String str) 將指定字符串連接到此字符串的結尾。 |
6 | boolean contentEquals(StringBuffer sb) 當且僅當字符串與指定的StringButter有相同順序的字符時候返回真。 |
7 | static String copyValueOf(char[] data) 返回指定數組中表示該字符序列的 String。 |
8 | static String copyValueOf(char[] data, int offset, int count) 返回指定數組中表示該字符序列的 String。 |
9 | boolean endsWith(String suffix) 測試此字符串是否以指定的後綴結束。 |
10 | boolean equals(Object anObject) 將此字符串與指定的對象比較。 |
11 | boolean equalsIgnoreCase(String anotherString) 將此 String 與另一個 String 比較,不考慮大小寫。 |
12 | byte[] getBytes() 使用平臺的默認字符集將此 String 編碼為 byte 序列,並將結果存儲到一個新的 byte 數組中。 |
13 | byte[] getBytes(String charsetName) 使用指定的字符集將此 String 編碼為 byte 序列,並將結果存儲到一個新的 byte 數組中。 |
14 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 將字符從此字符串復制到目標字符數組。 |
15 | int hashCode() 返回此字符串的哈希碼。 |
16 | int indexOf(int ch) 返回指定字符在此字符串中第一次出現處的索引。 |
17 | int indexOf(int ch, int fromIndex) 返回在此字符串中第一次出現指定字符處的索引,從指定的索引開始搜索。 |
18 | int indexOf(String str) 返回指定子字符串在此字符串中第一次出現處的索引。 |
19 | int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出現處的索引,從指定的索引開始。 |
20 | String intern() 返回字符串對象的規範化表示形式。 |
21 | int lastIndexOf(int ch) 返回指定字符在此字符串中最後一次出現處的索引。 |
22 | int lastIndexOf(int ch, int fromIndex) 返回指定字符在此字符串中最後一次出現處的索引,從指定的索引處開始進行反向搜索。 |
23 | int lastIndexOf(String str) 返回指定子字符串在此字符串中最右邊出現處的索引。 |
24 | int lastIndexOf(String str, int fromIndex) 返回指定子字符串在此字符串中最後一次出現處的索引,從指定的索引開始反向搜索。 |
25 | int length() 返回此字符串的長度。 |
26 | boolean matches(String regex) 告知此字符串是否匹配給定的正則表達式。 |
27 | boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 測試兩個字符串區域是否相等。 |
28 | boolean regionMatches(int toffset, String other, int ooffset, int len) 測試兩個字符串區域是否相等。 |
29 | String replace(char oldChar, char newChar) 返回一個新的字符串,它是通過用 newChar 替換此字符串中出現的所有 oldChar 得到的。 |
30 | String replaceAll(String regex, String replacement 使用給定的 replacement 替換此字符串所有匹配給定的正則表達式的子字符串。 |
31 | String replaceFirst(String regex, String replacement) 使用給定的 replacement 替換此字符串匹配給定的正則表達式的第一個子字符串。 |
32 | String[] split(String regex) 根據給定正則表達式的匹配拆分此字符串。 |
33 | String[] split(String regex, int limit) 根據匹配給定的正則表達式來拆分此字符串。 |
34 | boolean startsWith(String prefix) 測試此字符串是否以指定的前綴開始。 |
35 | boolean startsWith(String prefix, int toffset) 測試此字符串從指定索引開始的子字符串是否以指定前綴開始。 |
36 | CharSequence subSequence(int beginIndex, int endIndex) 返回一個新的字符序列,它是此序列的一個子序列。 |
37 | String substring(int beginIndex) 返回一個新的字符串,它是此字符串的一個子字符串。 |
38 | String substring(int beginIndex, int endIndex) 返回一個新字符串,它是此字符串的一個子字符串。 |
39 | char[] toCharArray() 將此字符串轉換為一個新的字符數組。 |
40 | String toLowerCase() 使用默認語言環境的規則將此 String 中的所有字符都轉換為小寫。 |
41 | String toLowerCase(Locale locale) 使用給定 Locale 的規則將此 String 中的所有字符都轉換為小寫。 |
42 | String toString() 返回此對象本身(它已經是一個字符串!)。 |
43 | String toUpperCase() 使用默認語言環境的規則將此 String 中的所有字符都轉換為大寫。 |
44 | String toUpperCase(Locale locale) 使用給定 Locale 的規則將此 String 中的所有字符都轉換為大寫。 |
45 | String trim() 返回字符串的副本,忽略前導空白和尾部空白。 |
46 | static String valueOf(primitive data type x) 返回給定data type類型x參數的字符串表示形式。 |
Random類 (java.util)
Random類中實現的隨機算法是偽隨機,也就是有規則的隨機。在進行隨機時,隨機算法的起源數字稱為種子數(seed),在種子數的基礎上進行一定的變換,從而產生需要的隨機數字。
相同種子數的Random對象,相同次數生成的隨機數字是完全相同的。也就是說,兩個種子數相同的Random對象,第一次生成的隨機數字完全相同,第二次生成的隨機數字也完全相同。這點在生成多個隨機數字時需要特別註意。
下面介紹一下Random類的使用,以及如何生成指定區間的隨機數組以及實現程序中要求的幾率。
1、Random對象的生成
Random類包含兩個構造方法,下面依次進行介紹:
a、public Random()
該構造方法使用一個和當前系統時間對應的相對時間有關的數字作為種子數,然後使用這個種子數構造Random對象。
b、public Random(long seed)
該構造方法可以通過制定一個種子數進行創建。
示例代碼:
Random r = new Random();
Random r1 = new Random(10);
再次強調:種子數只是隨機算法的起源數字,和生成的隨機數字的區間無關。
驗證:相同種子數的Random對象,相同次數生成的隨機數字是完全相同的。
import java.util.Random; public class test { public void random(){ int i=0; int j=0; Random random=new Random(1); Random random1=new Random(1); i=random.nextInt(); j=random1.nextInt(); System.out.println(i+"-----"+j); } public static void main(String[] args) { test tt=new test(); tt.random(); } }
Jana 5.類與對象