標籤:tpm cm5 regex tsp kvc bdr cWeb cuug sso
1 Object對象
物件導向的核心思想:“找合適的對象,做適合的事情”。
合適的對象:
- 自己描述類,自己建立對象。
- sun已經描述了好多常用的類,可以使用這些類建立對象。
API(Application Program Interface)
sun定義的那麼多類的終極父類是Object。Object描述的是所有類的通用屬性與方法。
1.1 toString方法
toString() 返回對象的描述資訊 [email protected] 類名@雜湊碼值的十六進位形式。
直接輸入一個對象的時候,會調用對象的toString方法。
練習:自訂一個Person類,列印該對象的描述資訊,要求描述資訊為:姓名 — 年齡
問題:調用p的toString方法時,列印出來的資訊是類名+記憶體位址值。不符合要求。根據我們之前學的繼承,假如父類的指定的功能不能滿足要求,那麼子類可以複寫父類的功能函數。那麼該對象再調用toString()方法時,則會調用子類複寫的toString方法。
編程習慣:開發人員要對自訂的類重寫toString(),對對象做詳細的說明
1.2 equals方法
equals() 返回的是比較的結果 如果相等返回true,否則false,比較的是對象的記憶體位址值。
問題:比較兩個人是否是同一個人,根據兩個人的名字判斷。
問題:如果根據名字去作為判斷兩個人是否是同一個時,明顯p與p1是同一個人,但是程式輸入卻不是同一個人。不符合我們現實生活的要求。
解決: 根據我們學的繼承中的函數複寫,如果父類的函數不能滿足我們目前的要求,那麼就可以在子類把該功能複寫,達到複合我們的要求。
編程習慣:開發人員要對自訂的類重寫equals(),使得比較兩個對象的時候比較對象的屬性是否相等,而不是記憶體位址。
1.3 hashCode方法
hashCode() 返回該對象的雜湊碼值: 採用作業系統底層實現的雜湊演算法。 同一個對象的雜湊碼值是唯一的。
java規定如果兩個對象equals返回true,那麼這兩個對象的hashCode碼必須一致。
2 String類
String類描述的是文本字串序列。 留言 QQ 寫日誌。
建立String類的對象的兩種方式:
- ""直接賦值法
- new關鍵字法
2.1 字串對象的比較
String Str = “jack”這個語句會先檢查字串常量池是否存放這個”jack1”這個字串對象,如果沒有存在,那麼就會在字串常量池中建立這個字串對象,如果存在直接返回該字串的記憶體位址值。
String str3 = new String(“jack”) 該語句會建立兩個對象,首先會先檢查字串常量池中存不存在jack這個字串對象,如果不存在就會建立,如果存在就返回記憶體位址值。建立了出來之後,new String這個語句就會在堆記憶體中開闢一個字串對象。總共兩個對象。
2.2 擷取方法
int length() 擷取字串的長度char charAt(int index) 擷取特定位置的字元 (角標越界)int indexOf(String str) 擷取特定字元的位置(overload)int lastIndexOf(int ch) 擷取最後一個字元的位置
2.3 判斷方法
boolean endsWith(String str) 是否以指定字元結束boolean isEmpty()是否長度為0 如:“” null V1.6Boolean contains(CharSequences) 是否包含指定序列 應用:搜尋Boolean equals(Object anObject) 是否相等Boolean equalsIgnoreCase(String anotherString) 忽略大小寫是否相等
2.4 轉換方法
String(char[] value) 將字元數群組轉換為字串String(char[] value, int offset, int count)Static String valueOf(char[] data)static String valueOf(char[] data, int offset, int count)char[] toCharArray() 將字串轉換為字元數組
2.5 其他方法
String replace(char oldChar, char newChar) 替換String[] split(String regex) 切割String substring(int beginIndex)String substring(int beginIndex, int endIndex)截取字串String toUpperCase() 轉大寫String toLowerCase() 轉小寫String trim() 去除空格
2.6 練習
- 去除字串兩邊空格的函數。
public class Demo1 {// 定義一個祛除字串兩邊空格的函數public static String trim( String str ){ // 0、定義求字串需要的起始索引變數 int start = 0; int end = str.length()-1; // 1. for迴圈遍曆字串對象的每一個字元 for (int i = 0; i<str.length() ; i++ ) { if ( str.charAt(i) == ‘ ‘ ) { start++; }else{ break; } } System.out.println( start ); for (; end<str.length() && end >= 0; ) { if ( str.charAt(end) == ‘ ‘ ) { end--; }else{ break; } } System.out.println( end ); // 2. 求子串 if( start < end ){ return str.substring( start , (end+1) ); }else{ return "_"; }
2.擷取上傳檔案名稱 "D:\\20120512\\day12\\Demo1.java"。
|
public static String getFileName2( String path ){
return path.substring( path.lastIndexOf("\\") + 1 ) |
3.將字串對象中儲存的字元反序。
// 將字串對象中儲存的字元反序 public static String reaverseString( String src ){ // 1. 將字串轉換為字元數組 char chs[] = src.toCharArray(); // 2. 迴圈交換 for ( int start = 0 , end = chs.length - 1; start < end ; start++,end-- ) { // 3. 資料交換 char temp = chs[end]; chs[end] = chs[start]; chs[start] = temp; } // 4. 將字元數群組轉換為字串 return new String( chs ); }
4. 求一個子串在整串中出現的次數
public static int getCount( String src , String tag ){ // 0. 定義索引變數和統計個數的變數 int index = 0; int count = 0; // 1. 寫迴圈判斷 while ( ( index = src.indexOf(tag) ) != -1 ) // jackjava { // 2. 求字串 System.out.println( src ); src = src.substring( index + tag.length() ); // index 4 + 4 = 8 System.out.print( src.length() + " : " + index + " : " + tag.length() ); // 3. 累加 count++; } return count; }
3 StringBuffer
StringBuffer : 由於String是不可變的,所以導致String對象泛濫,在頻繁改變字串對象的應用中,需要使用可變的字串緩衝區類。
特點:
- 預設緩衝區的容量是16。
- StringBuffer : 安全執行緒的所有的緩衝區操作方法都是同步的。效率很低。
3.1 添加方法
|
StringBuffer("jack") 在建立對象的時候賦值
append() 在緩衝區的尾部添加新的文字物件
insert() 在指定的下標位置添加新的文字物件 |
|
StringBuffer sb = new StringBuffer("jack");
sb.append(true);
sb.append(‘a‘);
sb.append(97).append(34.0).append(new char[]{‘o‘,‘o‘}); // 鏈式編程
System.out.println( sb.toString() ); // 輸出緩衝區的中文本資料
sb = new StringBuffer("jack");
sb.insert( 2, "java" ); // jajavack
System.out.println( sb.toString() ); |
3.2 查看
|
toString() 返回這個容器的字串
indexOf(String str) 返回第一次出現的指定子字串在該字串中的索引。
substring(int start) 從開始的位置開始截取字串 |
3.3 修改(U)
|
replace(int start int endString str) 使用給定 String 中的字元替換此序列的子字串中的字元。該子字串從指定的 start 處開始,一直到索引 end - 1 處的字元
setCharAt(int index char ch) 指定索引位置替換一個字元 |
3.4 刪除(D)
3.5 反序
reverse() 把字串反序輸出。
4 StringBuilder
StringBuilder 是JDK1.5之後提出的,線程不安全,但是效率要高。用法與StringBuffer類似。
5 System
System 可以擷取系統的屬性。
6 Runtime
Runtime 類主要描述的是應用程式啟動並執行環境。
7 Date
Date 類封裝的是系統的目前時間.。但是Date已經過時了,sun推薦使用Calendar類。
Calendar: 該類是一個日曆的類,封裝了年月日時分秒時區。
日期格式化類:SimpleDateFormat
8 Math
Math:類封裝了很多數學的功能。
練習:產生一個隨機碼
Object,String,StringBuffer,StringBuilder,System,Runtime,Date,Math介紹及用法(API)