《JAVA程序设计》_第七周学习总结
一、學習內容
1.String類——8,1知識
- Java專門提供了用來處理字符序列的String類。String類在java.lang包中,由于java.lang包中的類被默認引入,因此程序可以直接使用String類。
- 需要注意的是Java把String類聲明為final類,因此用戶不能擴展String類,即String類不可以有子類。
- 構造String對象
- 常量對象:字符串常量對象是用雙引號括起的字符序列,例如:"你好"、"12.97"、"boy"等。Java把用戶程序中的String常量放入常量池。因為String常量是對象,所以也有自己的引用和實體。
- String對象:可以使用String類聲明對象并創建對象,例如:
- 對象變量s中存放著引用,表明自己的實體的位置,即new 運算符首先分配內存空間并在內存空間中放入字符序列,然后計算出引用。
- 另外,用戶無法輸出String對象的引用:Syste.out.println(s);。輸出的是對象的實體,即字符序列we are students。
- 也可以用一個已創建的String對象創建另一個String對象,如:
- String類還有兩個較常用的構造方法。
- String (char a[])用一個字符數組a創建一個String對象,如:
過程相當于
String s = new String("Java");- String(char a[],int startIndex,int count)
提取字符數組a中的一部分字符創建一個String對象,參數startIndex和count分別指定在a中提取字符的起始位置和從該位置開始截取的字符個數,如:
相當于
?String s = new String("貳叁肆伍");
正則表達式
- 正則表達式是一個String對象的字符序列,該字符序列中含有具有特殊意義字符,這些特殊字符稱做正則表達式中的元字符。比如,"\dcat"中的\d就是有特殊意義的元字符,代表0到9中的任何一個,"0cat","1cat","2cat",…,"9cat"都是和正則表達式"\dcat"匹配的字符序列。
- 在正則表達式中可以用方括號括起若干個字符來表示一個元字符,該元字符代表方括號中的任何一個字符。例如String regex = "[159]ABC",那么"1ABC"、"5ABC"和"9ABC"都是和正則表達式regex匹配的字符序列。例如,[abc]:代表a、b、c中的任何一個;[^abc]:代表除了a、b、c以外的任何字符;[a-zA-Z]:代表英文字母(包括大寫和小寫)中的任何一個。
- String對象調用public String replaceAll(String regex,String replacement)方法返回一個新的String對象,這個新的String對象的字符序列是把當前String對象的字符序列中所有和參數regex匹配的子字符序列,用參數replacement的字符序列替換后得到字符序列。
public String[] split(String regex)使用參數指定的正則表達式regex做為分隔標記分解出其中的單詞,并將分解出的單詞存放在字符串數組中。例如,對于字符串str String str = "1949年10月1日是中華人民共和國成立的日子";如果準備分解出全部由數字字符組成的單詞,就必須用非數字字符串做為分隔標記,因此,可以使用正則表達式:String regex="\\D+";做為分隔標記分解出str中的單詞:String digitWord[]=str.split(regex);那么,digitWord[0]、digitWord[1]和digitWord[2]就分別是“1949”、“10”和“1”。
2.StringTokenizer類 ——8.2知識
- StringTokenizer類在java.util包中,有兩個常用的構造方法:
- StringTokenizer(String s):為String對象s構造一個分析器。使用默認的分隔標記,即空格符、換行符、回車符、Tab符、進紙符做分隔標記。
- StringTokenizer(String s, String delim為String對象s構造一個分析器。參數delim的字符序列中的字符的任意排列被作為分隔標記。
- StringTokenizer對象稱作一個字符串分析器可以使用下列方法:
- nextToken():逐個獲取字符串中的語言符號(單詞),字符串分析器中的負責計數的變量的值就自動減一 。
- hasMoreTokens():只要字符串中還有語言符號,即計數變量的值大于0,該方法就返回true,否則返回false。
- countTokens():得到分析器中計數變量的值
3.Scanner類——8.3知識
- scanner將空格做為分隔標記來解析字符序列中的單詞,具體解析操作:
scanner調用next()方法依次返回NBA中的單詞,如果NBA最后一個單詞已被next()方法返回,scanner調用hasNext()將返回false,否則返回true。
對于被解析的字符序列中的數字型的單詞,比如618,168.98等,scanner可以用nextInt()或nextDouble()方法來代替next()方法,即scanner可以調用nextInt()或nextDouble()方法將數字型單詞轉化為int或double數據返回。
如果單詞不是數字型單詞,scanner調用nextInt()或nextDouble()方法將發生InputMismatchException異常,在處理異常時可以調用next()方法返回該非數字化單詞。
- Scanner對象可以調用 useDelimiter(正則表達式); 方法將一個正則表達式作為分隔標記,即和正則表達式匹配的字符串都是分隔標記。
4.StringBuffer類——8.4知識
- StringBuffer append(String s):將String對象s的字符序列追加到當前StringBuffer對象的字符序列中,并返回當前StringBuffer對象的引用
- StringBuffer append(int n):將int型數據n轉化為String對象,再把該String對象的字符序列追加到當前StringBuffer對象的字符序列中,并返回當前StringBuffer對象的引用
- StringBuffer append(Object o):將一個Object對象o的字符序列表示追加到當前String- Buffer對象的字符序列中,并返回當前StringBuffer對象的引用
類似的方法還有: - StringBuffer append(long n),StringBuffer append(boolean n),
- StringBuffer append(float n),StringBuffer append(double n),
- StringBuffer append(char n)
- public chat charAt(int n ):得到參數n指定的置上的單個字符
- public void setCharAt(int n ,char ch):將當前StringBuffer對象實體中的字符串位置n處的字符用參數ch指定的字符替換
- StringBuffer insert(int index, String str) :將參數str指定的字符串插入到參數index指定的位置
- public StringBuffer reverse() :將該對象實體中的字符翻轉
- StringBuffer delete(int startIndex, int endIndex):從當前StringBuffer對象實體中的字符串中刪除一個子字符串
- 其相關方法:deleteCharAt(int index) 刪除當前StringBuffer對象實體的字符串中index位置處的一個字符。
- StringBuffer replace(int startIndex,int endIndex,String str):將當前StringBuffer對象實體中的字符串的一個子字符串用參數str指定的字符串替換
5.Date與Calendar類——8.5知識
(1) Date類
- Date類在java.util包中.
- Date類的構造方法之一:
- Date()使用Date類的無參數構造方法創建的對象可以獲取本地當前時間。
- Date類的構造方法之二:
- Date(long time)使用long型參數創建指定的時間
- System類的靜態方法 public long currentTimeMillis() 獲取系統當前時間。
(2)Calendar類
- Calendar類在java.util包中。
- 使用Calendar類的static方法 getInstance()可以初始化一個日歷對象,如:Calendar calendar= Calendar.getInstance();
- calendar對象可以調用方法:
6.日期的格式化——8.6知識
可以直接使用String類調用format方法對日期進行格式化。
8.6.1 format方法
Formatter類的format方法:
format(格式化模式, 日期列表)
按著“格式化模式”返回“日期列表”中所列各個日期中所含數據(年,月,日,小時等數據)的字符串表示。Java已經將format方法做為了String類的靜態方法,因此,程序可以直接使用String類調用format方法對日期進行格式化。
- 1.格式化模式
format方法中的“格式化模式”是一個用雙引號括起的字符序列(字符串),該字符序列中的字符由時間格式符和普通字符所構成。例如:"日期:%ty-%tm-%td"
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 s = String.format("%ty年%<tm月%<td日",new Date());
那么%<tm和%<td都格式化new Date(),因此字符串s就是:"11年02月10日"。
8.6.2 不同區域的星期格式
如果想用特定地區的星期格式來表示日期中的星期,可以用format的重載方法:
format (Locale locale,格式化模式,日期列表);
其中的參數locale是一個Locale類的實例,用于表示地域。
Locale類的static常量都是Locale對象,其中US是表示美國的static常量。
7.Math類、BigInteger類和Random類——8.7知識
8.7.1 Math類
Math類在java.lang包中。Math類包含許多用來進行科學計算的類方法,這些方法可以直接通過類名調用。
另外,Math類還有兩個靜態常量,它們分別是:
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() 產生一個0到1之間的隨機數(不包括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的對數。
- public static double sin(double a) 返回正弦值。
- public static double asin(double a) 返回反正弦值。
- public static double ceil(double a) 返回大于a的最小整數,并將該整數轉化為double型數據。
- public static double floor(double a) 返回小于a的最大整數,并將該整數轉化為double型數據。
- public static long round(double a) 返回值是(long)Math.floor(a+5),即所謂a的“四舍五入”后的值。
8.7.2 BigInteger類
java.math包中的BigInteger類提供任意精度的整數運算。可以使用構造方法:
public BigInteger(String val) 構造一個十進制的BigInteger對象。
以下是BigInteger類的常用類方法:
- public BigInteger add(BigInteger val) 返回當前大整數對象與參數指定的大整數對象的和。
- public BigInteger subtract(BigInteger val)返回當前大整數對象與參數指定的大整數對象的差。
- public BigInteger multiply(BigInteger val)返回當前大整數對象與參數指定的大整數對象的積。
- public BigInteger divide(BigInteger val)返回當前大整數對象與參數指定的大整數對象的商。
- public BigInteger remainder(BigInteger val)返回當前大整數對象與參數指定的大整數對象的余。
- public int compareTo(BigInteger val) 返回當前大整數對象與參數指定的大整數的比較結果,返回值是1、-1或0,分別表示當前大整數對象大于、小于或等于參數指定的大整數。
- public BigInteger pow(int a) 返回當前大整數對象的a次冪。
- public String toString() 返回當前大整數對象十進制的字符串表示。
- public String toString(int p) 返回當前大整數對象p進制的字符串表示。
8.7.3 Random類
Random類的如下構造方法:
public Random(); public Random(long seed);第一個構造方法使用當前及其實踐作為種子創建一個Random對象,第二個構造方法使用參數seed指定的種子創建一個Random對象。
隨機數生成器random調用不帶參數的nextInt()方法:
返回一個0至n之間(包括0,但不包括n)的隨機數
隨機數生成器random調用帶參數的nextInt(int m)方法(參數m必須取正整數值)
8.數字格式化——8.8知識
8.8.1 format方法
Formatter類提供了一個和C語言printf函數類似的format方法:format(格式化模式,值列表)
該方法按著“格式化模式”返回“值列表”的字符串表示。
Java已經將format方法做為了String類的靜態方法,因此,程序可以直接使用String類調用format方法對數字進行格式化。
- 1.格式化模式:format方法中的“格式化模式”是一個用雙引號括起的字符序列(字符串),該字符序列中的字符由格式符和普通字符所構成。
例如:"輸出結果%d,%f,%d"中的%d和%f是格式符號。
format方法返回的字符串就是“格式化模式”中的格式符被替換為它得到的格式化結果后的字符串。
例如:String s = String.format(“%.2f”,3.141592);那么s就是“3.14”. - 2.值列表:format方法中的“值列表”是用逗號分隔的變量、常量或表達式。 例如:
String s=format("%d元%0.3f公斤%d臺",888,999.777666,123); 那么,s就是"888元999.778公斤123臺"。 3.格式化順序:format方法默認按從左到右的順序使用“格式化模式”中的格式符來格式化“值列表”中對應的值,而“格式化模式”中的普通字符保留原樣。
例如,假設int型變量x和double型變量y的值分別是888和3.1415926,
那么對于String s = format("從左向右:%d,%.3f,%d",x,y,100);
字符串s就是:從左向右: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:如果準備在“格式化模式”中包含普通的%,在編寫代碼時需要連續鍵入兩個%,如:
String s=String.format("%d%%",89); 輸字符串s是:"89%"
- 注1:改變默認的順序(從左向右)進行格式化,在格式符前面添加索引符號index$,例如,1$表示“值列表”中的第1個,2$表示“值列表”中的第2個,
8.8.2 格式化整數
- 1.%d、%o、%x和%X
格式符可格式化byte、Byte、short、Short、int、Integer、long和Long型數據。 - 2.修飾符
- 加號修飾符"+"格式化正整數時,強制添加上正號,例如,%+d將123格式化為"+123"。
- 逗號修飾符“,”格式化整數時,按"千"分組。
- 3.數據的寬度
數據的寬度就是format方法返回的字符串的長度。規定數據寬度的一般格式為“%md”,其效果是在數字的左面增加空格;或"%-md“,其效果是在數字的右面增加空格,
例如,將數字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。
- 對于:String s=String.format("%5d%5d%8d",59,60,90);字符串s就是:“59 60 90”(長度為18)。
注:如果實際數字的寬度大于格式中指定的寬度,就按數字的實際寬度進行格式化。
可以在寬度的前面增加前綴0,表示用數字0(不用空格)來填充寬度左面的富裕部分,例如:String s=String.format("%08d",12);字符串s就是:"00000012",其長度(s.length())為8,即s在12的左面添加了6個數字0。
8.8.3 格式化浮點數
- 1.float,Float,double和Double
%f,%e(%E),%g(%G)和%a(%A)格式符可格式化float、Float、double和Double:- %f將值格式化為十進制浮點數,小數保留6位。
- %e(%E) 將值格式化為科學記數法的十進制的浮點數(%E在格式化時將其中的指數符號大寫,例如5E10)。
- 2.修飾符
- 加號修飾符"+"格式化正數時,強制添加上正號,例如%+f將123.78格式化為"+123.78", %+E將123.78格式化為"+1.2378E+2"。
- 逗號修飾符“,”格式化浮點數時,將整數部分按“千”分組。
3.限制小數位數與數據的“寬度”
"%.nf"可以限制小數的位數,其中的n是保留的小數位數,例如%.3f將6.1256格式化為"6.126"(保留3位小數)。
規定寬度的一般格式為“%mf”(在數字的左面增加空格),或“%-md”(在數字的右面增加空格)。注:如果實際數字的寬度大于格式中指定的寬度,就按數字的實際寬度進行格式化
9.Class類與Console類——8.9知識
8.9.1 Class類
- 1.使用Class的類方法得到一個和某類(參數className指定的類)相關的Class對象:
public static Class forName(String className) throws ClassNotFoundException??
上述方法返回一個和參數className指定的類相關的Class對象。如果類在某個包中,className必須帶有包名,例如, className="java.util.Date"。 - 2.步驟1中獲得的Class對象調用
public Object newInstance() throws Exception方法就可以得到一個className類的對象。
要特別注意的是:使用Class對象調用newInstance()實例化一個className類的對象時,className類必須有無參數的構造方法。
8.9.2 Console類
如果希望在鍵盤輸入一行文本,但不想讓該文本回顯,即不在命令行顯示,那么就需要使用java.io包中的Console類的對象來完成。
首先使用System類調用console()方法返回一個Console類的一個對象,比如cons:
Console cons = System.console();
然后,cons調用readPassword()方法讀取用戶在鍵盤輸入的一行文本,并將文本以一個char數組返回:
char[] passwd = cons.readPassword();
8.10 Pattern類與Matcher類
Pattern類和Matcher類在java.util.regex包中。
以下結合具體問題來講解使用Pattern類和Matcher類的步驟。假設有字符串:
String input = "hello,good morning,this is a good idea"
我們想知道input從哪個位置開始至哪個位置結束曾出現了字符串good。
使用Pattern類和Matcher類檢索字符串str中的子字符串的步驟如下:
- 1.建立模式對象
使用正則表達式regex做參數得到一個稱為模式的Pattern類的實例pattern:
例如:
模式對象是對正則表達式的封裝。Pattern類調用類方法compile(String regex)返回一個模式對象,其中的參數regex是一個正則表達式, 稱為模式對象使用的模式。
- 2.得到匹配對象
模式對象pattern調用matcher(CharSequence input)方法返回一個Matcher對象matcher,稱為匹配對象
Matcher matcher = pattern.matcher(input);
Matcher對象matcher可以使用下列方法尋找字符串input中是否有和模式regex匹配的子序列(regex是創建模式對象pattern時使用的正則表達式)。- public boolean find():尋找input和regex匹配的下一子序列,如果成功該方法返回true,否則返回false。
- public boolean matches():matcher調用該方法判斷input是否完全和regex匹配。
- public boolean lookingAt():matcher調用該方法判斷從input的開始位置是否有和regex匹配的子序列。
- public boolean find(int start) : matcher調用該方法判斷input從參數start指定位置開始是否有和regex匹配的子序列 。
- public String replaceAll(String replacement): matcher調用該方法可以返回一個字符串,該字符串是通過把input中與模式regex匹配的子字符串全部替換為參數replacement指定的字符串得到的.
- public String replaceFirst(String replacement): matcher調用該方法可以返回一個字符串,該字符串是通過把input中第1個與模式regex匹配的子字符串替換為參數replacement指定的字符串得到的。
二、腳本截圖
三、學習感受
- 本周的學習內容相較于上周較為簡單,重點在于正則表達式,理解起來比較費勁,之后也會對這一部分進行鞏固的。
- 本周的結對項目進入了完善和整合階段,進行了整體總結
- 本周的團隊項目也對之前的《需求規格說明書》和團隊分工進行了完善,確定分工
轉載于:https://www.cnblogs.com/wyf20175217/p/10681235.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的《JAVA程序设计》_第七周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到小孩是怎么回事
- 下一篇: 梦到鸡蛋煮烂了是什么原因