版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2022/9/3第 1 張注意:開始用功了!2022/9/3第 2 張Java 2實用教程(第4版) 第8章配合例子源代碼一起使用Power point 制作:耿祥義 張躍平常用實用類從本章開始,涉及到的內(nèi)容都是java類庫中的內(nèi)容,與語言本身沒有多大關(guān)系。所介紹的類的方法等不可能完整,需要你們課后查看Java手冊。2022/9/3第 3 張2022/9/3第 4 張導讀主要內(nèi)容 String類 StringTokenizer類 Scanner類 Date與Calendar類 日期格式化 Math、BigInteger與Random類 數(shù)字格式化 StringBuffer類 Pattern與M
2、atch類 Class類2022/9/3第 5 張8.1 String類 Java專門提供了用來處理字符序列的String類。 String類在java.lang包中,由于java.lang包中的類被默認引入,因此程序可以直接使用String類。 需要注意的是Java把String類聲明為final類,因此用戶不能擴展String類,即String類不可以有子類。 2022/9/3第 6 張8.1.1 構(gòu)造字符串對象 1常量對象:字符串常量對象是用雙引號括起的字符序列,例如:你好、12.97、boy等。2字符串對象 聲明:String s; 由于字符串是對象,那么就必須要創(chuàng)建字符串對象。例如:
3、 s = new String(we are students); String類較常用構(gòu)造方法: String(s),String (char a),String(char a,int startIndex,int count) 例如:char a = J,a,v,a; String s = new String(a); 例如:char a = 零,壹,貳,叁,肆,伍,陸,柒,捌,玖; String s = new String(a,2,4); 3引用字符串常量對象 string s1,s2; s1 = how are you; s2 = how are you;2022/9/3第 7 張8
4、.1.2 String 類的常用方法_1 1public int length():獲取一個字符串的長度 2public boolean equals(String s):比較當前字符串對象的實體是否與參數(shù)s指定的字符串的實體相同 例題1 說明了equals的用法。3public boolean startsWith(String s) public boolean endsWith(String s)方法:判斷當前字符串對象的前綴(后綴)是否參數(shù)s指定的字符串 tring tom = 天氣預報,陰有小雨,jerry = 比賽結(jié)果,中國隊贏得勝利; tom.startsWith(“天氣”)的值
5、是true; tom.endsWith(大雨)的值是false, 4. public int compareTo(String s):按字典序與參數(shù)s指定的字符串比較大小 如果當前字符串與s相同,該方法返回值0; 如果當前字符串對象大于s,該方法返回正值; 如果小于s,該方法返回負值。 例如,字符a在Unicode表中的排序位置是97、字符b是98,那么對于 String str = abcde; pareTo(boy)小于0; 其相關(guān)方法 public int compareToIgnoreCase(String s) 例題2 SortString.java Example8_2.java
6、使用java.util包中的Arrays調(diào)用sort方法和自己編寫SortString類中的sort方法將一個字符串數(shù)組按字典序排列 .2022/9/3第 8 張8.1.2 String 類的常用方法_2 public boolean contains(String s):判斷當前字符串對象是否含有參數(shù)指定的字符串s 例如 tom=“student”;那么tom.contains(“stu”)的值就是true; 而tom.contains(ok)的值是false。6. public int indexOf (String s):從當前字符串的頭開始檢索字符串s,并返回首次出現(xiàn)s的位置,其相關(guān)方
7、法: indexOf(String s ,int startpoint) lastIndexOf (String s) 例如 String tom = I am a good cat; tom.indexOf(a);/值是2 tom.indexOf(good,2);/值是7 tom.indexOf(a,7);/值是13 tom.indexOf(w,2);/值是-17. public String substring(int startpoint):獲得一個當前字符串的子串 其相關(guān)方法:substring(int start ,int end) 例如: String tom = 我喜歡籃球; S
8、tring s = tom.substring(1,3); 那么s是:喜歡 8public String trim() :得到一個s去掉前后空格后的字符串對象。 例題3 使用了字符串的常用方法 2022/9/3第 9 張8.1.3 字符串與基本數(shù)據(jù)的相互轉(zhuǎn)化_1 java.lang包中的Integer類調(diào)用其類方法: public static int parseInt(String s) 可以將由“數(shù)字”字符組成的字符串,如“876”,轉(zhuǎn)化為int型數(shù)據(jù), 類似地,使用java.lang包中的Byte、Short、Long、Float、Double類調(diào)相應的類方法可以將由數(shù)字字符組成的字符串
9、,轉(zhuǎn)化為相應的基本數(shù)據(jù)類型。如: 例如: int x; String s = “876; x = Integer.parseInt(s); public static byte parseByte(String s) throws NumberFormatException public static short parseShort(String s) throws NumberFormatException public static long parseLong(String s) throws NumberFormatException public static float pars
10、eFloat(String s) throws NumberFormatException public static double parseDouble(String s) throws NumberFormatException 2022/9/3第 10 張8.1.3 字符串與基本數(shù)據(jù)的相互轉(zhuǎn)化_2 可以使用String 類的類方法 public static String valueOf(byte n) public static String valueOf(int n) public static String valueOf(long n) public static Strin
11、g valueOf(float n) public static String valueOf(double n) 將形如123、1232.98等數(shù)值轉(zhuǎn)化為字符串,如: String str = String.valueOf(12313.9876); 例題4 求若干個數(shù)之和,程序輸出結(jié)果如圖8.4。 注 應用程序中的main方法中的參數(shù)args能接受用戶從鍵盤鍵入的字符串。 比如,使用解釋器java.exe來執(zhí)行主類 C:ch8java Example8_4 78.86 12 25 125 98 這時程序中的args0、arg1、arg2、arg3和args4 分別得到字符串“78.86”、“
12、12”、“25”、“125”和“98”。2022/9/3第 11 張8.1.4 對象的字符串表示 所有的類都默認是java.lang包中Object類的子類或間接子類。 Object類有一個public String toString()方法,一個對象通過調(diào)用該方法可以獲得該對象的字符串表示。 一個對象調(diào)用toString()方法返回的字符串的一般形式為: 創(chuàng)建對象的類的名字對象的引用的字符串表示 例題5 TV.java Example8_5.java TV類重寫了toString()方法,并使用super調(diào)用隱藏的toString()方法 2022/9/3第 12 張8.1.5 字符串與字符
13、、字節(jié)數(shù)組_1 1字符串與字符數(shù)組 String 類的構(gòu)造方法:String(char)和String(char,int offset,int length)分別用字符數(shù)組中的全部字符和部分字符創(chuàng)建字符串對象 String類提供了將字符串存放到數(shù)組中的方法: public void getChars(int start,int end,char c,int offset ) 將字符串中的全部字符存放在一個字符數(shù)組中的方法: public char toCharArray() 例題6 具體地說明了getChars()和toCharArray()方法的使用 2字符串與字節(jié)數(shù)組 String(byt
14、e)用指定的字節(jié)數(shù)組構(gòu)造一個字符串對象。 String(byte,int offset,int length) 用指定的字節(jié)數(shù)組的一部分,即從數(shù)組起始位置offset開始取length個字節(jié)構(gòu)造一個字符串對象。public byte getBytes() 方法使用平臺默認的字符編碼,將當前字符串轉(zhuǎn)化為一個字節(jié)數(shù)組。 public byte getBytes(String charsetName) 使用參數(shù)指定字符編碼,將當前字符串轉(zhuǎn)化為一個字節(jié)數(shù)組。 例題7 假設(shè)機器的默認編碼是:GB2312。字符串:“Java你好”調(diào)用getBytes()返回一個字節(jié)數(shù)組d,其長度為8,注意該字節(jié)數(shù)組的d0
15、d7 單元存放字符的編碼的情況。 2022/9/3第 13 張8.1.5 字符串與字符、字節(jié)數(shù)組_2 3字符串的加密算法 使用一個字符串password作為密碼對另一個字符串sourceString進行加密 。將密碼password存放到一個字符數(shù)組char p = password.toCharArray();假設(shè)數(shù)組p的長度為n,那么就將待加密的字符串sourceString按順序以n個字符為一組,對每一組中的字符用數(shù)組a的對應字符做加法運算。 例題8 EncryptAndDecrypt.java Example8_8.java2022/9/3第 14 張8.1.6 正則表達式及字符串的替
16、換與分解 _1 1正則表達式 一個正則表達式是含有一些具有特殊意義字符的字符串,這些特殊字符稱作正則表達式中的元字符。比如,“dcat”中的d就是有特殊意義的元字符,代表0到9中的任何一個。字符串對象調(diào)用 public boolean matches(String regex)方法可以判斷當前字符串對象是否和參數(shù)regex指定的正則表達式匹配。參考表8.1,表8.2 。 例題9 程序判斷用戶從鍵盤輸入的字符序列是否全部由英文字母所組成。 2字符串的替換 字符串對象調(diào)用public String replaceAll(String regex,String replacement)方法返回一個字
17、符串,該字符串是當前字符串中所有和參數(shù)regex指定的正則表達式匹配的子字符串被參數(shù)replacement指定的字符串替換后的字符串,例如: String s =12hello567bird.replaceAll(a-zA-Z+,你好);那么s就是將12hello567bird中所有英文子串替換為你好后得到的字符串,即s是:“12你好567你好” . 例題10 字符串str調(diào)用replaceAll()方法返回一個字符串,該字符串是str中的網(wǎng)站鏈接地址被替換為*后的字符串。 2022/9/3第 15 張8.1.6 正則表達式及字符串的替換與分解 _23字符串的分解 字符串調(diào)用public St
18、ring split(String regex)使用參數(shù)指定的正則表達式regex做為分隔標記分解出其中的單詞,并將分解出的單詞存放在字符串數(shù)組中。 例如,對于字符串str String str = 1949年10月1日是中華人民共和國成立的日子; 如果準備分解出全部由數(shù)字字符組成的單詞,就必須用非數(shù)字字符串做為分隔標記,因此,可以使用正則表達式:String regex=D+; 做為分隔標記分解出str中的單詞:String digitWord=str.split(regex); 那么,digitWord0、digitWord1和digitWord2就分別是“1949”、“10”和“1”。
19、代碼/chapter8/%E4%BE%8B%E5%AD%9011/Example8_11.java用戶從鍵盤輸入一行文本,程序輸出其中的單詞。 2022/9/3第 16 張8. 2 StringTokenizer類 本節(jié)學習怎樣使用StringTokenizer對象分解字符串。 StringTokenizer類在java.util包中,有兩個常用的構(gòu)造方法:StringTokenizer(String s):為字符串s構(gòu)造一個分析器。使用默認的分隔標記,即空格符(若干個空格被看做一個空格)、換行符、回車符、Tab符、進紙符。 StringTokenizer(String s, String d
20、elim):為字符串s構(gòu)造一個分析器。參數(shù)dilim中的字符被作為分隔標記 。 例如: StringTokenizer fenxi = new StringTokenizer(you are e); StringTokenizer fenxi = new StringTokenizer(you,are ; e, , ; ); StringTokenizer對象稱作一個字符串分析器可以使用下列方法: nextToken():逐個獲取字符串中的語言符號(單詞),字符串分析器中的負責計數(shù)的變量的值就自動減一 。 hasMoreTokens():只要字符串中還有語言符號,即計數(shù)變量的值大于0,該方法就
21、返回true,否則返回false。 countTokens():得到分析器中計數(shù)變量的值。 例題12 輸出字符串中的單詞,并統(tǒng)計出單詞個數(shù) 2022/9/3第 17 張8. 3 Scanner類 使用Scanner類從字符串中解析程序所需要的數(shù)據(jù)。 1使用默認分隔標記解析字符串 創(chuàng)建Scanner對象,并將要解析的字符串傳遞給所構(gòu)造的對象, 例如 String NBA = I Love This Game; 如下構(gòu)造一個Scanner對象: Scanner scanner = new Scanner(NBA); 例題14 使用正則表達式(匹配所有非數(shù)字字符串)String regex= .+;
22、 作為分隔標記解析字符串:話費清單:市話費76.89元,長途花費167.38元,短信費12.68元中的全部價格數(shù)字,并計算了總的通信費用。 那么scanner將空格做為分隔標記來解析字符串中的單詞,解析操作的特點如下: scanner調(diào)用next()方法依次返回NBA中的單詞,如果NBA最后一個單詞已被next()方法返回,scanner調(diào)用hasNext()將返回false,否則返回true。 對于被解析的字符串中的數(shù)字型的單詞,比如618,168.98等,scanner可以用nextInt()或nextDouble()方法來代替next()方法,即scanner可以調(diào)用nextInt()或
23、nextDouble()方法將數(shù)字型單詞轉(zhuǎn)化為int或double數(shù)據(jù)返回。 如果單詞不是數(shù)字型單詞,scanner調(diào)用nextInt()或nextDouble()方法將發(fā)生InputMismatchException異常,在處理異常時可以調(diào)用next()方法返回該非數(shù)字化單詞。 例題13 使用Scanner對象解析字符串TV cost 876 puter cost 2398 dollar.telephone cost 1278 dollar中的全部價格數(shù)字(價格數(shù)字的前后需有空格),并計算了總消費。 2使用正則表達式作為分隔標記解析字符串 Scanner對象可以調(diào)用 useDelimiter
24、(正則表達式); 方法將一個正則表達式作為分隔標記,即和正則表達式匹配的字符串都是分隔標記。 2022/9/3第 18 張8.4 Date與Calendar類 8.4.1 Date類 Date類在java.util包中。1.使用Date類的無參數(shù)構(gòu)造方法創(chuàng)建的對象可以獲取本地當前時間。 Date() 例: Date nowTime=new Date(); 當前nowTime對象中含有的日期、時間就是創(chuàng)建nowTime對象時的本地計算機的日期和時間。例如,假設(shè)當前時間是:2011年3月10日23:05:32(CST時區(qū)),那么System.out.println(nowTime); 輸出結(jié)果是:
25、Thu Mar 10 23:05:32 CST 2011。 Date對象表示時間的默認順序是:星期、月、日、小時、分、秒、年 2.使用帶參數(shù)的構(gòu)造方法 Date(long time) 計算機系統(tǒng)將其自身的時間的“公元”設(shè)置在1970年1月1日0時(格林威治時間),可以根據(jù)這個時間使用Date的帶參數(shù)的構(gòu)造方法:Date(long time)來創(chuàng)建一個Date對象,例如: Date date1=new Date(1000), date2=new Date(-1000); 其中的參數(shù)取正數(shù)表示公元后的時間,取負數(shù)表示公元前的時間,例如1000表示1000毫秒,那么,date1含有的日期、時間就是計
26、算機系統(tǒng)公元后1秒時刻的日期、時間。如果運行Java程序的本地時區(qū)是北京時區(qū)(與格林威治時間相差8個小時),那么上述date1就是1970年01月01日08時00分01秒、date2就是1970年01月01日07時59分59秒。3. System類的靜態(tài)方法 public long currentTimeMillis() 獲取系統(tǒng)當前時間 2022/9/3第 19 張8.4.2 Calendar類 1 Calendar類在java.util包中。使用Calendar類的static方法 getInstance()可以初始化一個日歷對象,如: Calendar calendar= Calenda
27、r.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 calendar對象常用方法 public int get(int field) :可
28、以獲取有關(guān)年份、月份、小時、星期等信息 例如:calendar.get(Calendar.MONTH); 返回一個整數(shù),如果該整數(shù)是0表示當前日歷是在一月,該整數(shù)是1表示當前日歷是在二月等。 例如:calendar.get(Calendar.DAY_OF_WEEK);返回一個整數(shù),如果該整數(shù)是1表示星期日,如果是2表示是星期一,依次類推,如果是7表示是星期六。 public long getTimeInMillis() :可以將時間表示為毫秒。 例題15 計算了2012-9-01和2016-07-01之間相隔的天數(shù) 例題16 Example8_16.java CalendaBean.java輸
29、出2016年7月的“日歷” 2022/9/3第 20 張8. 5 日期的格式化 8.5.1 format方法 Formatter類的format方法:format(格式化模式, 日期列表) 按著“格式化模式”返回“日期列表”中所列各個日期中所含數(shù)據(jù)(年,月,日,小時等數(shù)據(jù))的字符串表示。 Java已經(jīng)將format方法做為了String類的靜態(tài)方法,因此,程序可以直接使用String類調(diào)用format方法對日期進行格式化。 1格式化模式 format方法中的“格式化模式”是一個用雙引號括起的字符序列(字符串),該字符序列中的字符由時間格式符和普通字符所構(gòu)成。例如:日期:%ty-%tm-%td
30、String s = String.format(%tY年%tm月%td日,new Date(),new Date(),new Date(); 那么s就是2011年02月10日 時間格式符2日期列表 format方法中的“日期列表”可以是用逗號分隔的Calendar對象或Date對象。 format方法默認按從左到右的順序使用“格式化模式”中的格式符來格式“日期列表”中對應的日期,而“格式化模式”中的普通字符保留原樣。3格式化同一日期 可以在“格式化模式”中使用“”,比如:%ty-%tm-%td中的三個格式符將格式化同一日期,即含有“”的格式符和它前面的格式符格式同一個日期,例如:String
31、 s = String.format(%ty年%tm月%td日,new Date();那么%tm和%td都格式化new Date(),因此字符串s就是:11年02月10日。 常用的日期格式符及作用見 199. 例題17 格式化日期 2022/9/3第 21 張8.5.2 不同區(qū)域的星期格式 如果想用特定地區(qū)的星期格式來表示日期中的星期,可以用format的重載方法: format (Locale locale,格式化模式,日期列表); 其中的參數(shù)locale是一個Locale類的實例,用于表示地域。 Locale類的static常量都是Locale對象,其中US是表示美國的static常量。
32、比如,假設(shè)當前時間是2011-02-10,對于(%ta表示簡稱的星期): String s = String.format(Locale.US,%ta(%tF),new Date(); 那么s是Thu(2011-02-10), 對于(%tA表示全稱的星期) String s = String.format(Locale.JAPAN,%tA(%tF),new Date(); 那么s是木曜日(2011-02-10)。注:如果format方法不使用Locale參數(shù)格式化日期,當前應用程序所在系統(tǒng)的地區(qū)設(shè)置是中國,那么相當于locale參數(shù)取Locale.CHINA。2022/9/3第 22 張8.
33、6 Math、BigInteger和Random類 8.6.1 Math類 Math類在java.lang包中。Math類包含許多用來進行科學計算的類方法,這些方法可以直接通過類名調(diào)用。另外,Math類還有兩個靜態(tài)常量,它們分別是:E 2. 4和PI 3. 46。以下是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的最小
34、值。* public static double random() 產(chǎn)生一個0到1之間的隨機數(shù)(不包括0和1)。* public static double pow(double 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) 返回反正弦值。2022/9/3第 23
35、 張8.6.2 BigInteger類 1 java.math包中的BigInteger類提供任意精度的整數(shù)運算。可以使用構(gòu)造方法: public BigInteger(String val) 構(gòu)造一個十進制的BigInteger對象。 2 以下是BigInteger類的常用類方法:*public BigInteger add(BigInteger val) 返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的和。*public BigInteger subtract(BigInteger val)返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的差。* public BigInteger multiply(B
36、igInteger val)返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的積。*public BigInteger divide(BigInteger val)返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的商。*public BigInteger remainder(BigInteger val)返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的余。*public int compareTo(BigInteger val) 返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)的比較結(jié)果,返回值是1、-1或0,分別表示當前大整數(shù)對象大于、小于或等于參數(shù)指定的大整數(shù)。*public BigInteger abs() 返回當前大整
37、數(shù)對象的絕對值。*public BigInteger pow(int a) 返回當前大整數(shù)對象的a次冪。*public String toString() 返回當前大整數(shù)對象十進制的字符串表示。*public String toString(int p) 返回當前大整數(shù)對象p進制的字符串表示。例題18 計算5的平方根以及兩個大整數(shù)的和與積 2022/9/3第 24 張8.6.3 Random類 復習: 使用Math類調(diào)用其類方法random()返回一個0至1之間的隨機數(shù)(不包括0和1),例如,下列代碼得到1至100之間的一個隨機整數(shù)(包括1和100), (int)(Math.random()*
38、100)+1;新內(nèi)容: Java提供了更為靈活的用于獲得隨機數(shù)的Random類(該類在java.util包中)。 Random類的如下構(gòu)造方法: public Random(); public Random(long seed);使用參數(shù)seek指定的種子創(chuàng)建一個Random對象 人們習慣地將Random對象稱為隨機數(shù)生成器。 返回一個隨機整數(shù) 隨機數(shù)生成器random調(diào)用不帶參數(shù)的nextInt()方法: Random random=new Random(); random.nextInt(); 返回一個0至n之間(包括0,但不包括n)的隨機數(shù) 隨機數(shù)生成器random調(diào)用帶參數(shù)的nextI
39、nt(int m)方法(參數(shù)m必須取正整數(shù)值) 例如,random.nextInt(100);返回一個0至100之間的隨機整數(shù)(包括0,但不包括100)。 隨機得到true和false兩個表示真和假的boolean值, 隨機數(shù)生成器random調(diào)用nextBoolean()方法 例如 random.nextBoolean();返回一個隨機boolean值。2022/9/3第 25 張8. 7 數(shù)字格式化 8.7.1 Formatter 類_1 Formatter類提供了一個和C語言printf函數(shù)類似的format方法: format(格式化模式,值列表) 該方法按著“格式化模式”返回“值列表
40、”的字符串表示。 Java已經(jīng)將format方法做為了String類的靜態(tài)方法,因此,程序可以直接使用String類調(diào)用format方法對數(shù)字進行格式化。1格式化模式 format方法中的“格式化模式”是一個用雙引號括起的字符序列(字符串),該字符序列中的字符由格式符和普通字符所構(gòu)成。 例如:輸出結(jié)果%d,%f,%d中的%d和%f是格式符號 . format方法返回的字符串就是“格式化模式”中的格式符被替換為它得到的格式化結(jié)果后的字符串。例如:String s = String.format(“%.2f”,3.141592);那么s就是“3.14”.2值列表 format方法中的“值列表”是用
41、逗號分隔的變量、常量或表達式。 例如:String s=format(%d元%0.3f公斤%d臺,888,999.777666,123); 那么,s就是888元999.778公斤123臺。2022/9/3第 26 張 8.7.1 Formatter 類_23格式化順序 format方法默認按從左到右的順序使用“格式化模式”中的格式符來格式化“值列表”中對應的值,而“格式化模式”中的普通字符保留原樣。 例如,假設(shè)int型變量x和double型變量y的值分別是888和3.1415926, 那么對于String s = format(從左向右:%d,%.3f,%d,x,y,100); 字符串s就是:
42、從左向右:888,3.142,100注1:改變默認的順序(從左向右)進行格式化,在格式符前面添加索引符號index$,例如,1$表示“值列表”中的第1個,2$表示“值列表”中的第2個, 對于:String s=String.format(“不是從左向右:%2$.3f,%3$d,%1$d”,x,y,100); 字符串s就是 不是從左向右:3.142,100,888注2:如果準備在“格式化模式”中包含普通的%,在編寫代碼時需要連續(xù)鍵入兩個%,如: String s=String.format(%d%,89); 輸字符串s是:89%2022/9/3第 27 張8.7.2 格式化整數(shù) 1%d,%o,%
43、x和%格式符可格式化byte、Byte、short、Short、int、Integer、long和Long型數(shù)據(jù),詳細說明見Page204. 例如,對于:String s = String.format(%d,%o,%x,%X,703576,703576,703576,703576);字符串s就是:703576,2536130,abc58,ABC582修飾符 加號修飾符+格式化正整數(shù)時,強制添加上正號,例如,%+d將123格式化為+123。 逗號修飾符“,”格式化整數(shù)時,按千分組,例如,對于:String s=String.format(按千分組:%,d。按千分組帶正號%+,d,1235678
44、,9876);字符串s就是:按千分組:1,235,678。按千分組帶正號+9,8763數(shù)據(jù)的寬度 數(shù)據(jù)的寬度就是format方法返回的字符串的長度。規(guī)定數(shù)據(jù)寬度的一般格式為“%md”,其效果是在數(shù)字的左面增加空格;或%-md“,其效果是在數(shù)字的右面增加空格,例如,將數(shù)字59格式化為寬度為8的字符串:String s=String.format(%8d,59);字符串s就是: 59,其長度(s.length())為8,即s在59左面添加了6個空格字符。對于:String s=String.format(“%-8d”,59);字符串s就是:59 ,其長度(s.length()為8。對于:Strin
45、g s=String.format(%5d%5d%8d,59,60,90);字符串s就是: 59 60 90(長度為18)。注:如果實際數(shù)字的寬度大于格式中指定的寬度,就按數(shù)字的實際寬度進行格式化??梢栽趯挾鹊那懊嬖黾忧熬Y0,表示用數(shù)字0(不用空格)來填充寬度左面的富裕部分,例如:String s=String.format(%08d,12);字符串s就是:00000012,其長度(s.length())為8,即s在12的左面添加了6個數(shù)字0。2022/9/3第 28 張8.7.3 格式化浮點數(shù) _1 1%f,%e(%E),%g(%G)和%a(%A)格式符可格式化float、Float、dou
46、ble和Double: %f 將值格式化為十進制浮點數(shù),小數(shù)保留6位。 %e(%E) 將值格式化為科學記數(shù)法的十進制的浮點數(shù)(%E在格式化時將其中的指數(shù)符號大寫,例如5E10)。 例如,對于:String s = String.format(%f,%e,13579.98,13579.98); 字符串s就是:13579.980000,1.357998e+04 2修飾符 加號修飾符+格式化正數(shù)時,強制添加上正號,例如%+f將123.78格式化為+123.78, %+E將123.78格式化為+1.2378E+2。 逗號修飾符“,”格式化浮點數(shù)時,將整數(shù)部分按“千”分組, 例如,對于:String s
47、=String.format(整數(shù)部分按千分組: %+,f,1235678.9876); 字符串s就是:整數(shù)部分按千分組:+1,235,678.987600 2022/9/3第 29 張8.7.3 格式化浮點數(shù)_2 3限制小數(shù)位數(shù)與數(shù)據(jù)的“寬度” %.nf可以限制小數(shù)的位數(shù),其中的n是保留的小數(shù)位數(shù),例如%.3f將6.1256格式化為6.126(保留3位小數(shù))。 規(guī)定寬度的一般格式為“%mf”(在數(shù)字的左面增加空格),或“%-md”(在數(shù)字的右面增加空格)。 例如,將數(shù)字59.88格式化為寬度為11的字符串 String s=String.format(“%11f”,59.88); 字符串s就
48、是: 59.880000,其長度(s.length()為11。 String s=String.format(“%-11f”,59.88);字符串s就是: 59.880000 ,其長度(s.length()為11。在指定寬度的同時也可以限制小數(shù)位數(shù)(%m.nf), String s=String.format(“%11.2f”,59.88); 字符串s就是: 59.88,即s在59.88左面添加了6個空格字符。 在寬度的前面增加前綴0,表示用數(shù)字0(不用空格)來填充寬度左面的富裕部分,例如: String s=String.format(“%011f”,59.88); 字符串s就是:0059.
49、880000,其長度(s.length())為11。注:如果實際數(shù)字的寬度大于格式中指定的寬度,就按數(shù)字的實際寬度進行格式化例題19 格式化數(shù)字 2022/9/3第 30 張8.8 StringBuffer類 8.8.1 StringBuffer對象的創(chuàng)建 String對象一旦創(chuàng)建,那么實體是不可以再發(fā)生變化的,如圖8.18所示 String s = new String(“我喜歡散步); 但是,String類可以重新賦值如:s=(“我喜歡跑步);重新賦值需要什么操作?StringBuffer類有三個構(gòu)造方法:1StringBuffer()2StringBuffer(int size)3Str
50、ingBuffer(String s) StringBuffer類能創(chuàng)建可修改的字符串序列,該類的對象的實體的內(nèi)存空間可以自動的改變大小,便于存放一個可變的字符序列。一個StringBuffer對象調(diào)用append方法可以追加字符序列,如圖819所示。例如: StringBuffer s = new StringBuffer(我喜歡); s.append(玩籃球); 2022/9/3第 31 張8.8.2 StringBuffer類的常用方法_1 1StringBuffer append(String s):將一個字符串對象追加到當前StringBuffer對象中 StringBuffer a
51、ppend(int n):將一個int型數(shù)據(jù)轉(zhuǎn)化為字符串對象后再追加到當前StringBuffer對象中 StringBuffer 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
52、 n ):得到參數(shù)n指定的置上的單個字符 public void setCharAt(int n ,char ch):將當前StringBuffer對象實體中的字符串位置n處的字符用參數(shù)ch指定的字符替換2022/9/3第 32 張8.8.2 StringBuffer類的常用方法_2 3StringBuffer insert(int index, String str) :將參數(shù)str指定的字符串插入到參數(shù)index指定的位置 4public StringBuffer reverse() :將該對象實體中的字符翻轉(zhuǎn)5StringBuffer delete(int startIndex, int
53、 endIndex):從當前StringBuffer對象實體中的字符串中刪除一個子字符串 其相關(guān)方法:deleteCharAt(int index) 刪除當前StringBuffer對象實體的字符串中index位置處的一個字符。6. StringBuffer replace(int startIndex,int endIndex,String str):將當前StringBuffer對象實體中的字符串的一個子字符串用參數(shù)str指定的字符串替換 例題20 使用StringBuffer類的常用方法 2022/9/3第 33 張Java1.5增加了StringBuilder類,此類提供一個與 Str
54、ingBuffer 兼容的 API,但不保證同步。該類被設(shè)計用作 StringBuffer 的一個簡易替換,用在字符串緩沖區(qū)被單個線程使用的時候(這種情況很普遍)。如果可能,建議優(yōu)先采用該類,因為在大多數(shù)實現(xiàn)中,它比 StringBuffer 要快。 2022/9/3第 34 張8. 9 Pattern與Matcher類_1 Java提供了專門用來進行模式匹配的Pattern類和Matcher類,這些類在java.util.regex包中。 以下結(jié)合具體問題來講解使用Pattern類和Matcher類的步驟。假設(shè)有字符串: String input = hello,good morning,t
55、his is a good idea 我們想知道input從哪個位置開始至哪個位置結(jié)束曾出現(xiàn)了字符串good。 使用Pattern類和Matcher類檢索字符串str中的子字符串的步驟如下:1建立模式對象 使用正則表達式regex做參數(shù)得到一個稱為模式的Pattern類的實例pattern: 例如:String regex = good; Pattern pattern = pile(regex); 模式對象是對正則表達式的封裝。Pattern類調(diào)用類方法compile(String regex)返回一個模式對象,其中的參數(shù)regex是一個正則表達式, 稱為模式對象使用的模式。 2022/9/3第 35 張8. 9 Pattern與Matcher類 _22得到匹配對象 模式對象pattern調(diào)用matcher(CharSequence input)方法返回一個Matcher對象matcher,稱為匹配對象 Matcher matcher = patter
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東面試模擬9
- 地方公務(wù)員深圳申論3
- 地方公務(wù)員山東申論98
- 吉林公務(wù)員面試模擬89
- 2024年商業(yè)協(xié)議書格式范文1000字
- 建筑機電設(shè)備安裝工程質(zhì)量管控標準指引
- 個人承包簡單合同范本2024年
- 貴州公共基礎(chǔ)知識17
- 業(yè)績合同協(xié)議書2024年
- 2024年鋼筋工程承包合同(1850字)
- 雙層罐改造施工方案
- 腫瘤放射規(guī)培出科小結(jié)
- 光通信芯片十大品牌簡介
- 小學勞動教育一年級第一單元2《洗漱》教學設(shè)計
- 醫(yī)保按病種分值付費(DIP)院內(nèi)培訓
- 兒童心理異常的早期識別與干預
- 《礦井一通三防》課件
- 《困難氣道的評估》課件
- 強化學習基本理論概述
- 通信工程專業(yè)導論(第1-3章)
- 醫(yī)院預算管理優(yōu)化研究
評論
0/150
提交評論