java面向對象程序設計第2版第9章常用實用類課件_第1頁
java面向對象程序設計第2版第9章常用實用類課件_第2頁
java面向對象程序設計第2版第9章常用實用類課件_第3頁
java面向對象程序設計第2版第9章常用實用類課件_第4頁
java面向對象程序設計第2版第9章常用實用類課件_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、Java面向對象程序設計第2版 第9章配合第2版 例子源代碼一起使用Power point 制作:耿祥義 張躍平常用實用類第1頁,共32頁。1導讀第2頁,共32頁。29.1 String類 java.lang包中的String類來創(chuàng)建一個字符串變量,字符串變量是對象。 第3頁,共32頁。39.1.1 構造字符串對象 1常量對象:字符串常量對象是用雙引號括起的字符序列,例如:你好、12.97、boy等。 2字符串對象 聲明:String s; String類較常用構造方法: String(s),String (char a),String(char a,int startIndex,int co

2、unt) 3引用字符串常量對象 string s1 = how are you; 第4頁,共32頁。49.1.2 String 類的常用方法 1public int length():獲取一個字符串的長度 2public boolean equals(String s):比較當前字符串對象的實體是否與參數(shù)s指定的字符串的實體相同 例題9-13public boolean startsWith(String s) public boolean endsWith(String s)方法:判斷當前字符串對象的前綴(后綴)是否是參數(shù)s指定的字符串 4public boolean regionMatch

3、es(int firstStart,String other,int ortherStart,int length) :從當前字符串參數(shù)firstStart指定的位置開始處,取長度為length的一個子串,并將這個子串和參數(shù)other指定的一個子串進行比較 。 例題9-2 其重載方法:public boolean regionMatches(boolean b,int firstStart,String other,int ortherStart,int length) 5public int compareTo(String s):按字典序與參數(shù)s指定的字符串比較大小 其相關方法: publ

4、ic int compareToIgnoreCase(String s) 例題9-3 6.public boolean contains(String s):判斷當前字符串對象是否含有參數(shù)指定的字符串s 7.public int indexOf (String s):從當前字符串的頭開始檢索字符串s,并返回首次出現(xiàn)s的位置,其相關方法: indexOf(String s ,int startpoint), lastIndexOf (String s) 8public String substring(int startpoint):獲得一個當前字符串的子串 其相關方法:substring(in

5、t start ,int end)9public String trim() :得到一個s去掉前后空格后的字符串對象。 例題9-4第5頁,共32頁。59.1.3 符串與基本數(shù)據(jù)的相互轉化 java.lang包中的Integer類調(diào)用其類方法: public static int parseInt(String s) 可以將由“數(shù)字”字符組成的字符串,如12356,轉化為int型數(shù)據(jù),例如:int x; String s = 123456; x = Integer.parseInt(s); 類似地,使用java.lang包中的Byte、Short、Long、Float、Double類調(diào)相應的類方

6、法可以將由“數(shù)字”字符組成的字符串,轉化為相應的基本數(shù)據(jù)類型。 可以使用String 類的類方法public static String valueOf (byte n)等將形如123、1232.98等數(shù)值轉化為字符串??梢允褂肔ong類中的類方法public static String toBinaryString(long i)等得到整數(shù)的各種進制的字符串表示。例題9-5 注 應用程序中的main方法中的參數(shù)args能接受用戶從鍵盤鍵入的字符串。比如,使用解釋器java.exe來執(zhí)行主類 C:2000java Example9_5 12.89 35 78這時,程序中的args0,arg1,

7、arg2分別得到字符串12.89,35和78。第6頁,共32頁。69.1.4 對象的字符串表示 Object類有一個public String toString()方法,一個對象通過調(diào)用該方法可以獲得該對象的字符串表示。一個對象調(diào)用toString()方法返回的字符串的一般形式為: 創(chuàng)建對象的類的名字對象的引用的字符串表示 例題9-6第7頁,共32頁。79.1.5 字符串與字符、字節(jié)數(shù)組 1字符串與字符數(shù)組 String 類的構造方法:String(char)和String(char,int offset,int length)分別用字符數(shù)組中的全部字符和部分字符創(chuàng)建字符串對象 String類

8、提供了將字符串存放到數(shù)組中的方法:public void getChars(int start,int end,char c,int offset ) 將字符串中的全部字符存放在一個字符數(shù)組中的方法:public char toCharArray() 例題9-72字符串與字節(jié)數(shù)組 String(byte)用指定的字節(jié)數(shù)組構造一個字符串對象。String(byte,int offset,int length) 用指定的字節(jié)數(shù)組的一部分,即從數(shù)組起始位置offset開始取length個字節(jié)構造一個字符串對象。 public byte getBytes() 方法使用平臺默認的字符編碼,將當前字符串轉

9、化為一個字節(jié)數(shù)組。 public byte getBytes(String charsetName) 使用參數(shù)指定字符編碼,將當前字符串轉化為一個字節(jié)數(shù)組。 例題9-8第8頁,共32頁。89.1.6 正則表達式及字符串的替換與分解 1正則表達式 一個正則表達式是含有一些具有特殊意義字符的字符串,這些特殊字符稱作正則表達式中的元字符。比如 “dhello”中的d就是有特殊意義的元字符,代表0到9中的任何一個。字符串對象調(diào)用 public boolean matches(String regex)方法可以判斷當前字符串對象是否和參數(shù)regex指定的正則表達式匹配。參考表9.1,表9.2 。 2字符

10、串的替換 字符串對象調(diào)用public String replaceAll(String regex,String replacement)方法返回一個字符串,該字符串是當前字符串中所有和參數(shù)regex指定的正則表達式匹配的子字符串被參數(shù)replacement指定的字符串替換后的字符串,例如:String result=12hello567.replaceAll(d+,你好);那么result就是:“你好hello你好” 例題9-93字符串的分解 字符串調(diào)用public String split(String regex)使用參數(shù)指定的正則表達式regex做為分隔標記分解出其中的單詞,并將分解出

11、的單詞存放在字符串數(shù)組中。例如,對于字符串:str=“1931年09月18日晚,日本發(fā)動侵華戰(zhàn)爭,請記住這個日子!”; 使用正則表達式:String regex=D+; 做為分隔標記分解出str中的單詞String digitWord=str.split(regex); 例題9-10那么,digitWord0、digitWord1和digitWord2就分別是1931、09和18。 第9頁,共32頁。99.2 StringBuffer類 9.2.1 StringBuffer對象的創(chuàng)建 String s = new String(我喜歡學習); StringBuffer buffer = new

12、 StringBuffer(“我喜歡學習”); buffer.append(數(shù)學); StringBuffer類有三個構造方法:1StringBuffer()2StringBuffer(int size)3StringBuffer(String s) 例題9-11第10頁,共32頁。109.2.2 StringBuffer類的常用方法 1StringBuffer append(String s):將一個字符串對象追加到當前StringBuffer對象中 StringBuffer append(int n):將一個int型數(shù)據(jù)轉化為字符串對象后再追加到當前StringBuffer對象中 Stri

13、ngBuffer append(Object o):將一個Object對象的字符串表示追加到當前StringBuffer對象中 類似的方法還有: StringBuffer append(long n),StringBuffer append(boolean n), StringBuffer append(float n),StringBuffer append(double n), StringBuffer append(char n)2public chat charAt(int n ):得到參數(shù)n指定的置上的單個字符 public void setCharAt(int n ,char ch

14、):將當前StringBuffer對象實體中的字符串位置n處的字符用參數(shù)ch指定的字符替換3StringBuffer insert(int index, String str) :將參數(shù)str指定的字符串插入到參數(shù)index指定的位置 4public StringBuffer reverse() :將該對象實體中的字符翻轉5StringBuffer delete(int startIndex, int endIndex) :從當前StringBuffer對象實體中的字符串中刪除一個子字符串 其相關方法: deleteCharAt(int index) 刪除當前StringBuffer對象實體的

15、字符串中index位置處的一個字符。6. StringBuffer replace( int startIndex ,int endIndex, String str) :將當前StringBuffer對象實體中的字符串的一個子字符串用參數(shù)str指定的字符串替換 例題9-12第11頁,共32頁。119. 3 StringTokenizer類 StringTokenizer類在java.util包中,有兩個常用的構造方法:StringTokenizer(String s):為字符串s構造一個分析器。使用默認的分隔標記,即空格符(若干個空格被看做一個空格)、換行符、回車符、Tab符、進紙符。 St

16、ringTokenizer(String s, String delim):為字符串s構造一個分析器。參數(shù)dilim中的字符被作為分隔標記 。 StringTokenizer對象稱作一個字符串分析器可以使用下列方法: nextToken():逐個獲取字符串中的語言符號(單詞),字符串分析器中的負責計數(shù)的變量的值就自動減一 。 hasMoreTokens():只要字符串中還有語言符號,即計數(shù)變量的值大于0,該方法就返回true,否則返回false。 countTokens():得到分析器中計數(shù)變量的值。 例題9-13 例題9-14第12頁,共32頁。129.4 Scanner類 使用默認分隔標記

17、解析文件 創(chuàng)建Scanner對象,并將要解析的字符串傳遞給所構造的對象例如,對于字符串 String s = telephone cost 876 dollar.Computer cost 2398.89 dollar.;為了解析出s中的單詞,可以如下構造一個Scanner對象: Scanner scanner = new Scanner(s);那么scanner默認地使用空格做為分隔標記來解析字符串中的單詞。也可以讓Scanner Scanner對象調(diào)用方法:useDelimiter(正則表達式);將正則表達式做為分隔標記,即Scanner對象在解析字符串時,把與正則表達式匹配的字符串做為分

18、隔標記。 例題9-15Scanner對象解析字符串的特點如下: scanner調(diào)用next()方法依次返回被解析的字符串s中的單詞,如果s最后一個單詞已被next()方法返回,scanner調(diào)用hasNext()將返回false,否則返回true。對于被解析的字符串s中的數(shù)字型的單詞,比如876,2398.89等,scanner可以用nextInt()或nextDouble()方法來代替next()方法,即scanner可以調(diào)用nextInt()或nextDouble()方法將數(shù)字型單詞轉化為int或double數(shù)據(jù)返回。如果單詞不是數(shù)字型單詞,scanner調(diào)用nextInt()或nextD

19、ouble()方法將發(fā)生InputMismatchException異常,在處理異常時可以調(diào)用next()方法返回該非數(shù)字化單詞。第13頁,共32頁。139.5 Date和Clendar類 9.5.1 Date對象 Date類在java.util包中。使用Date類的無參數(shù)構造方法創(chuàng)建的對象可以獲取本地當前時間。 計算機時間的“公元”設置在1970.年1月1日0時(格林威治時間),可以根據(jù)這個時間使用Date的帶參數(shù)的構造方法: Date(long time) 例:Date date1=new Date(1000), date2=new Date(-1000); date1就是1970年01月

20、01日08時00分01秒、date2就是1970年01月01日07時59分59秒 可以用System類的靜態(tài)方法 public long currentTimeMillis()獲取系統(tǒng)當前時間,如果運行Java程序的本地時區(qū)是北京時區(qū),這個時間是從1970年1月1日08點到目前時刻所走過的毫秒數(shù)。 Date對象表示時間的默認順序是:星期、月、日、小時、分、秒、時區(qū),年。例如:Tue Mar 12 10:13:58 CST 2013。 第14頁,共32頁。149.5.2 Calendar對象 1 Calendar類在java.util包中。使用Calendar類的static方法 getInst

21、ance()可以初始化一個日歷對象,如:Calendar calendar= Calendar.getInstance();2 calendar對象可以調(diào)用方法:public final void set(int year,int month,int date)public final void set(int year,int month,int date,int hour,int minute)public final void set(int year,int month, int date, int hour, int minute,int second)將日歷翻到任何一個時間 3 c

22、alendar對象常用方法 public int get(int field) :可以獲取有關年份,月份,小時,星期等信息 例如 calendar.get(Calendar.MONTH); calendar.get(DAY_OF_WEEK); public long getTimeInMillis() :可以將時間表示為毫秒。 例題9-16,例題9-17第15頁,共32頁。159.5.3 日期格式化 1 使用SimpleDateFormat類 使用java.util包中的DateFormat的子類SimpleDateFormat類來實現(xiàn)日期的格式化。SimpleDateFormat有一個常用構

23、造方法: public SimpleDateFormat(String pattern); 該構造方法可以用參數(shù)pattern指定的格式創(chuàng)建一個對象,該對象調(diào)用:public String format(Date date)方法格式化時間對象date。 pattern是由普通字符和一些稱作格式符所組成的字符序列。format 方法在格式化date時,將用date中的相應的時間替換相應的格式符,簡單地說,,format方法返回的字符串就是把pattern中的格式符用相應時間替換后的字符序列。 例題9-18第16頁,共32頁。162 format方法 可以使用更為方便的Formatter類,F(xiàn)or

24、matter類的format方法: format(格式化模式 , 日期列表)按著“格式化模式” 返回 “日期列表”中所列各個日期中所含數(shù)據(jù)(年,月,日,小時等數(shù)據(jù))的字符串表示。 目前Java已經(jīng)將format方法封裝到String類中,是String類的的一個靜態(tài)方法,因此程序可以直接使用String類調(diào)用format方法對日期進行格式化。 格式化模式 format方法中的“格式化模式”是一個用雙引號括起的字符序列(字符串),該字符序列中的字符由時間格式符和普通字符所構成。如日期:%ty-%tm-%td例如:String s = String.format(%tY年%tm月%td日,new

25、Date(),new Date(),new Date();那么s就是2011年02月10日 日期列表 format方法中的“日期列表”可以是用逗號分隔的Calendar對象或Date對象。要保證format方法“格式化模式”中的格式符的個數(shù)與“日期列表”中列出的日期個數(shù)相同。format方法默認按從左到右的順序使用“格式化模式”中的格式符來格式“日期列表”中對應的日期,而“格式化模式”中的普通字符保留原樣。第17頁,共32頁。173 格式化同一日期 希望用幾個格式符號來格式化“日期列表”中的同一個日期,可以在“格式化模式”中使用“”,比如:%ty-%tm-%td中的三個格式符將會格式化同一日期

26、,即含有“”的格式符和它前面的格式符一同格式化同一個日期,例如: String s = String.format(%ty年%tm月%td日,new Date();那么%tm和%td都格式化new Date(),因此字符串s就是:11年02月10日。以下是常用的日期格式符及作用: %tY 將日期中的“年”格式化為4位形式,例如,1999,2002。 %ty 將日期中的“年”格式化為2位形式(帶前導零),例如,99,02。 %tm 將日期中的“月”格式化為2位形式(帶前導零),即01-13,其中01是一年的第一個月(13是支持陰歷所需的一個特殊值)。 等等。第18頁,共32頁。189.5.4 不

27、同區(qū)域的星期格式 不同國家的星期的簡稱或全稱有很大的不同,例如美國用Thu(Thursday)簡稱(全稱)星期四、日本用“木”(木曜日)簡稱(全稱)星期四,意大利用gio(gioved)簡稱(全稱)星期四等。如果想用特定地區(qū)的星期格式來表示日期中的星期,可以用format的重載方法:format (Locale locale,格式化模式 , 日期列表);其中的參數(shù)locale是一個Locale類的實例,用于表示地域。Locale類的static常量都是Locale對象,其中US是表示美國的static常量。 比如,假設時間是2015年3月12日,該日是星期四,如果format方法中的參數(shù)loc

28、al取值:Locale.US,那么%tA得到的結果就是Thursday,如果format方法中的參數(shù)local取值:Locale. JAPAN,那么%tA得到的結果就是木曜日。 注:如果format方法不使用Locale參數(shù)格式化日期,當前應用程序所在系統(tǒng)的地區(qū)設置是中國,那么相當于locale參數(shù)取Locale.CHINA。 例題9-19第19頁,共32頁。199. 6 Math、BigInteger和Random類 9.6.1 Math類 Math類在java.lang包中。Math類包含許多用來進行科學計算的類方法,這些方法可以直接通過類名調(diào)用。另外,Math類還有兩個靜態(tài)常量,它們分別

29、是:E 2.7182828284590452354和PI 3.14159265358979323846。以下是Math類的常用類方法:*public static long abs(double a) 返回a的絕對值。*public static double max(double a,double b) 返回a、b的最大值。*public static double min(double a,double b) 返回a、b的最小值。*public static double random() 產(chǎn)生一個0到1之間的隨機數(shù)(不包括0和1)。*public static double pow(do

30、uble a,double b) 返回a的b次冪。*public static double sqrt(double a) 返回a的平方根。*public static double log(double a) 返回a的對數(shù)。*public static double sin(double a) 返回正弦值。*public static double asin(double a) 返回反正弦值。第20頁,共32頁。209.6.2 BigInteger類 1 java.math包中的BigInteger類提供任意精度的整數(shù)運算??梢允褂脴嬙旆椒ǎ?public BigInteger(String

31、 val)構造一個十進制的BigInteger對象。 2 以下是BigInteger類的常用類方法:*public BigInteger add(BigInteger val) 返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的和。*public BigInteger subtract(BigInteger val)返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的差。* public BigInteger multiply(BigInteger val)返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的積。*public BigInteger divide(BigInteger val)返回當前大整數(shù)對象與參數(shù)指定

32、的大整數(shù)對象的商。*public BigInteger remainder(BigInteger val)返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的余。*public int compareTo(BigInteger val) 返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)的比較結果,返回值是1、-1或0,分別表示當前大整數(shù)對象大于、小于或等于參數(shù)指定的大整數(shù)。*public BigInteger abs() 返回當前大整數(shù)對象的絕對值。*public BigInteger pow(int a) 返回當前大整數(shù)對象的a次冪。*public String toString() 返回當前大整數(shù)對象十進制的字

33、符串表示。*public String toString(int p) 返回當前大整數(shù)對象p進制的字符串表示。 例題9-20第21頁,共32頁。219.6.3 Romdom類 可以使用Math類調(diào)用其類方法random()返回一個0至1之間的隨機數(shù)(不包括0和1),例如,下列代碼得到1至100之間的一個隨機整數(shù)(包括1和100):(int)(Math.random()*100)+1; Java提供了更為靈活的用于獲得隨機數(shù)的Romdom類(該類在java.util包中)。使用Romdom類的如下構造方法: public Random(); public Random(long seed);創(chuàng)建

34、Rondom對象,其中第二個構造方法使用參數(shù)seed指定的種子創(chuàng)建一個Rondom對象。 習慣地將Rondom對象稱為隨機數(shù)生成器。例如下列隨機數(shù)生成器random調(diào)用不帶參數(shù)的nextInt()方法返回一個隨機整數(shù):Random random=new Random();random.nextInt();相關方法及使用: nextInt(int m)方法 ,例如 random.nextInt(100); 返回一個0至100之間的隨機整數(shù)(包括0,但不包括100)。 nextBoolean()方法,例如random.nextBoolean(); 返回一個隨機boolean值。第22頁,共32頁。

35、229. 7 DecimalFormat類 DecimalFormat類在java.text包中。 可以用DecimalFormat類對輸出的數(shù)字結果進行必要的格式化 。第23頁,共32頁。239.7.1 格式化數(shù)字 1 格式化整數(shù)位和小數(shù)位 DecimalFormat對象調(diào)用:public final String format(double number);對參數(shù)指定的數(shù)字進行格式化,并將格式化結果以String對象返回。例如:DecimalFormat format=new DecimalFormat(00000.00); 那么 String result=format.format(6

36、789.8765);得到的result是:“06789.88” 2 整數(shù)位的分組 當希望將數(shù)字的整數(shù)部分分組(用逗號分隔),可以在DecimalFormat對象中的例如:將 “123456789.9876543” 的整數(shù)部分按4位分組的一個格式化模式是:“#,#,#,#00.00” 使用該模式格式化上述數(shù)字的結果是:1,2345,6789.99 3 格式化為百分數(shù)或千分數(shù) 在DecimalFormat對象中的數(shù)字格式化模式尾加“%”,可以將數(shù)字格式化為百分數(shù)、尾加“u2030”將數(shù)字格式化為千分數(shù)。 4 格式化為科學計數(shù) 在DecimalFormat對象中的數(shù)字格式化模式尾加“E0”,可以將數(shù)

37、字格式化為科學計數(shù)。 5 格式化為貨幣值 在DecimalFormat對象中的數(shù)字格式化模式尾加貨幣符號,例如“$”“¥”,可以將數(shù)字格式化為帶貨幣符號的串。 第24頁,共32頁。249.7.2 將格式化字符串轉化為數(shù)字 根據(jù)要轉化的字符串創(chuàng)建一個DecimalFormat對象,并將適合該字符串的格式化模式傳遞給該對象,例如: DecimalFormat df = new DecimalFormat(#,#00.000$);那么,df調(diào)用parse(String s)方法將返回一個Number對象,例如:Number num = df.parse(3,521,563.345$);那么,Numb

38、er對象調(diào)用方法可以返回該對象中含有的數(shù)字, 例如:double d=number.doubleValue(); d的值是3521563.345。 例題9-21第25頁,共32頁。259. 8 Pattern與Match類 Java提供了專門用來進行模式匹配的Pattern類和Match類,這些類在java.util.regex包中。 第26頁,共32頁。269.8.1 模式對象 1 使用Pattern類創(chuàng)建一個對象,稱作模式對象,模式對象是對正則表達式的封裝。 2 Pattern類調(diào)用類方法compile(String regex)返回一個模式對象,其中的參數(shù)regex是一個正則表達式,稱作

39、模式對象使用的模式。 例如 Pattern p = Ppile(hellod); 3 Pattern類也可以調(diào)用類方法compile(String regex, int flags)返回一個Pattern對象 。第27頁,共32頁。279.8.2 匹配對象 模式對象p調(diào)用matcher(CharSequence input)方法返回一Matcher對象m,稱作匹配對象。下列幾個方法是Matcher對象m常用的方法:*public boolean find() :尋找input和regex匹配的下一子序列*public boolean matches():判斷input是否完全和regex匹配*public boolean lookingAt():判斷從input的開始位置是否有和regex匹配的子序列public boolean find(int start):判斷input從參數(shù)start指定位置開始是否有和regex匹配的子序列 public String replaceAll(String replacement):Matcher對象m調(diào)用該方法可以返回一個字符串 public String replaceFirst(String replacement):Matcher對象m調(diào)用該方法可以返回一個字符

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論