版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
編寫字符界面應(yīng)用(下)單擊此處編輯副標(biāo)題樣式版權(quán)聲明華清遠(yuǎn)見教育集團(tuán)版權(quán)所有;未經(jīng)華清遠(yuǎn)見明確許可,不得為任何目的以任何形式復(fù)制或傳播此文檔的任何部分;本文檔包含的信息如有更改,恕不另行通知;華清遠(yuǎn)見教育集團(tuán)保留所有權(quán)利。2目錄掌握Math類中常用的方法掌握String/StringBuffer/StringBuilder的用法掌握幾種常用集合類的用法掌握文件操作熟練掌握正則表達(dá)式掌握日期和時間處理了解DeprecationMath類Math類中包含了一組數(shù)學(xué)函數(shù)截取:ceil、floor、round變量的max、min、abs三角函數(shù):sin、cos、tan、asin、acos、atan、toDegrees和toRadians對數(shù)指數(shù):log和exp其它:sqrt、pow、random常數(shù):PI、EMath示例publicclassTestMath{ publicstaticvoidmain(String[]args){ //得到一個隨機(jī)數(shù)
doubled=Math.random(); System.out.println(d); //計算半徑為10的圓的周長
doublep=2*Math.PI*10; System.out.println(p); } }String類String對象代表一組不可改變的Unicode字符序列它的方法可用來創(chuàng)造新的字符串:concat、replace、substring、toLowerCase、toUpperCase和trim。查找字符的方法:endsWith、startsWith、indexOf、lastIndexOf。比較字符的方法:equals、equalsIgnoreCase、compareTo。其它:charAt、length()String對象的創(chuàng)建方式比較法一:Strings1=newString(“hello”);Strings2=newString(“hello”);法二:Strings3=“hello”;Strings4=“hello”;hellos1s3s4hellohellos2hello字符串創(chuàng)建方式比較示例public
classStringCompare{public
static
voidmain(String[]args){Stringstr1="Hello";Stringstr2="Hello";Stringstr3=newString("Hello");Stringstr4=newString("Hello");System.out.println("str1==str2:"+(str1==str2));System.out.println("str1==str3:"+(str1==str3));System.out.println("str3==str4:"+(str1==str4));System.out.println("str1.equals(str2):"+str1.equals(str2));System.out.println("str1.equals(str3):"+str1.equals(str3));System.out.println("str3.equals(str4):"+str3.equals(str4));}}str1==str2:truestr1==str3:falsestr3==str4:falsestr1.equals(str2):truestr1.equals(str3):truestr3.equals(str4):true字符串搜索示例public
classSearchStr{
public
static
voidmain(String[]args){Stringname="mary@";intindex1=name.indexOf('.');intindex2=name.indexOf('@');if(index1!=-1&&index2!=-1&&index1>index2){System.out.println("該電子郵件地址有效");
}else{System.out.println("該電子郵件地址無效");
}}}字符串截取示例public
classSubstr{public
static
voidmain(String[]args){Strings="Hello";Strings1="howareyou?";System.out.println("indexofl="+s.indexOf('l'));System.out.println("lastindexofl="+s.lastIndexOf('l'));System.out.println("indexof('o',3)="+s.indexOf('o',3));System.out.println(s.substring(0,5));System.out.println(s.concat(s1));System.out.println(s.replace('',','));System.out.println(s.trim());}}indexofl=2lastindexofl=3indexof('o',3)=4HelloHellohowareyou?Hello,HelloStringBuffer類StringBuffer對象代表一組可改變的Unicode字符序列構(gòu)造器:StringBuffer()創(chuàng)建一個空的字符緩沖,長度為16個字符容量;StringBuffer(intcapacity)用指定的初始容量創(chuàng)建一個空的字符緩沖;StringBuffer(StringinitString)創(chuàng)建包含initString的字符緩沖,并加上16個字符的備用空間。字符串緩沖的修改操作:append、insert、reverse、setCharAt、setLength。public
classMyStringBuf{public
static
voidmain(String[]args){StringBufferbuf=newStringBuffer("today");buf.append("Monday");
intindex=6;buf.insert(index,"is");
index=0;buf.setCharAt(index,'T');
intstart=9;
intend=12;buf.replace(start,end,"satur");Strings=buf.toString();//轉(zhuǎn)換為字符串
System.out.println(s);}}todaybuftodayMondaytodayisMondayTodayisMondayTodayissaturdayStringBuffer示例StringBuilderStringBuilder和StringBuffer一樣,也是表示的是一個字符緩存,具有和StringBuffer一樣的方法StringBuilder和StringBuffer的區(qū)別在于,StringBuilder的方法是非線程安全的,而StringBuffer的方法是線程安全的如果不會產(chǎn)生多線程問題,則使用StringBuilder效率會更高一些關(guān)于線程,見后續(xù)內(nèi)容StringBuilder/StringBuffer/String都是CharSequence的子類,因此在接受CharSequence的地方,都可以使用者三者之一13Collections(集合)API一個collection(集合)是用一個對象來代表一組對象,其中的每個對象作為collection的一個元素。在CollectionAPI中,代表對象集合的接口有:Collection抽象的集合SetCollection的子接口,一個無序無重復(fù)集ListCollection的子接口,一個有序可重復(fù)集CollectionAPI層次結(jié)構(gòu)<<interface>>Collection<<interface>>SetHashSet<<interface>>ListArrayListVectorList(1)List:List是Collection的子接口,它用于保存有序的可重復(fù)的對象,它增加了對于索引的定義,放置在List內(nèi)的對象被有序排列,可以通過一個整數(shù)索引來訪問其中的對象,索引的值從0開始。常用方法:add(intidx,Objectobj):將指定對象obj插入到List中指定索引idx的位置,原來位于該位置的對象和其后的對象依次后移;add(Objectobj):addAll(intidx,Collectioncol):將Collection參數(shù)col中的所有子對象依次插入到List中指定索引idx的位置,原來位于該位置的對象和其后的對象依次后移。set(intidx,Objectobj),可以用來將指定索引idx的對象替換成obj,并返回被替換的對象。16List(2)ArrayList可以將其想象成一種可以自動增加容量可以存放不同類型對象的數(shù)組方法:add(Objecto)/get(intindex)/size()Vector:和ArrayList類似,但Vector是線程安全的無論ArrayList還是Vector,都是使用數(shù)組來實現(xiàn)的,因此,插入元素時,該位置后的元素都需要往后移;刪除元素時,該元素之后的元素都需要往后移動LinkedList使用鏈表實現(xiàn)。因此當(dāng)插入/刪除元素時,并不需要移動元素,只是改變相關(guān)元素的指針指向即可。17List(3)LinkedList不支持快速隨機(jī)訪問,無論訪問哪個元素,都需要從頭開始遍歷如果內(nèi)容頻繁更新,應(yīng)該選擇LinkedList;如果內(nèi)容更新操作很少,且追求快速的訪問速度,應(yīng)該用ArrayList/Vector18List例子importjava.util.*;publicclassListExample{publicstaticvoidmain(String[]args){List<Object>list=newArrayList<Object>();list.add("one");list.add("second");list.add("3rd");list.add(newInteger(4));list.add(newFloat(5.0F));list.add("second");list.add(newInteger(4));System.out.println(list);}}可以加入重復(fù)的值Set(1)Set表示的是不重復(fù)的對象集合。如果試圖向Set中加入一個已經(jīng)在它里面存在的對象,將不會成功HashSet:是一個無序的集,但是它能夠快速的查找指定的對象,這是因為它采用了能夠適應(yīng)這個需求的散列碼(hashcode)LinkedHashSet20Set(2)Hashcode可以理解成唯一標(biāo)識一個對象的ID,不同的對象,其hashcode是不同的可以通過Object的hashCode()方法來獲得對象的hashcode,也可以根據(jù)需要,覆蓋hashCode()方法,實現(xiàn)自己的hashCode()如果該類要被放到HashSet/LinkedHashSet中,那么,必須同時定義自己的hashCode()方法和equals()方法,并且這兩個方法必須遵循如下的法則:對于MyObject類的實例x和y,如果x.equals(y),那么x.hashCode()必須和y.hashCode()相等。21Set(3)hashCode()的定義方式:參見hashCode.txt22Set(4)TreeSet:TreeSet是一個有順序無重復(fù)的集。我們可以用任何的順序向TreeSet中加入對象,但是,當(dāng)使用iterator()方法進(jìn)行遍歷時,我們可以得到一個有序的結(jié)果。因為放到TreeSet中的對象需要相互比較大小從而排出順序,因此,它們之間必須是可以比較大小的,這里是要求對應(yīng)的類必須實現(xiàn)Comparable接口,且實現(xiàn)其compareTo(Objectobj)方法,在這個方法中定義對象的排序規(guī)則,它應(yīng)該返回一個整數(shù)值,根據(jù)這個值的是大于0、小于0還是等于0可以確定兩個對象的順序。23Set例子importjava.util.*;publicclassSetExample{publicstaticvoidmain(String[]args){Set<Object>set=newHashSet<Object>();set.add("one");set.add("second");set.add("3rd");set.add(newInteger(4));set.add(newFloat(5.0F));set.add("second");set.add(newInteger(4));System.out.println(set);}}set中只會有一個second值Iterators(遍歷器)Iteration是指取得集合中每一個元素的過程Listlist=newArrayList();Iteratorelements=list.iterator();while(elements.hasNext()){ System.out.println(elements.next());}Collections類(1)Collections類包含了許多對集合進(jìn)行運(yùn)算的專用靜態(tài)方法,這些運(yùn)算包括對集合進(jìn)行排序、混排、查找和比較等。下面列出一些常用的方法。排序(Sort)根據(jù)元素的自然順序?qū)χ付斜戆瓷蜻M(jìn)行排序。列表中的所有元素都必須可相互比較(即對于列表中的任何e1和e2元素,pareTo(e2)不得拋出ClassCastException)?;炫牛⊿huffling)使用默認(rèn)隨機(jī)源隨機(jī)更改指定列表的序列,即打亂原來列表中順序,可以用來實現(xiàn)碰運(yùn)氣抽獎游戲。在生成測試案例時是十分有用的。26Collections類(2)反轉(zhuǎn)(Reverse)使用reverse()方法可以根據(jù)元素的自然順序?qū)χ付斜戆唇敌蜻M(jìn)行排序。復(fù)制(Copy)copy()方法用于實現(xiàn)列表的復(fù)制。27Map(1)映射表(Map)用于存儲元素對(它們分別稱作“鍵”和“值”)一個映射不能包含重復(fù)的鍵,每個鍵最多只能映射一個值在Map中鍵和值的保存順序和它們的插入順序無關(guān)Map用put(key,value)方法來添加一個值,用get(key)方法獲取與key鍵相關(guān)聯(lián)的值。28Map(2)Map接口的keySet()方法返回一個Set,因為Map中的key是不可重復(fù)的,所以得到所有key的keySet()方法返回一個Set對象,values()方法返回一個值的集合。如果想同時查看所有的鍵和值,可以使用Map接口中包含的Map.Entry接口,一個Map.Entry就是Map中的一個關(guān)鍵字/值對。Map接口中的entrySet()方法返回了一個集合對象,其中每一個元素都實現(xiàn)了Map.Entry接口。containsKey(Objectkey)用來判斷某個Key是否存在。29泛型泛型的作用和意義:泛型的主要好處就是讓編譯器保留參數(shù)的類型信息,執(zhí)行類型檢查,執(zhí)行類型轉(zhuǎn)換操作:編譯器保證了這些類型轉(zhuǎn)換的絕對無誤。典型場景:在容器類中,提前對容器所能裝載的內(nèi)容進(jìn)行限制:List<Cellphone>box=...;Cellphonecp=box.get(0);練習(xí):將前面的集合類相關(guān)的代碼改成使用泛型的方式泛型使用泛型自定義泛型publicMyGenerics<T>{...}受限制的泛型:讓類型參數(shù)繼承一個類或者實現(xiàn)接口publicMyGenerics<TextendsXclass/Yinterface>{...}31新的for循環(huán)用于遍歷數(shù)組或者集合for(typevariable:數(shù)組或者集合){…}例:List<String>namesList=newArrayList<String>();namesList.add(“mary”);namesList.add(“tom”);…for(Stringname:namesList){System.out.println(name);}枚舉使用enum關(guān)鍵字定義枚舉類型publicenumGender{MALE,FEMALE}File類java.io.File類封裝了文件對象創(chuàng)建文件對象FilemyFile;myFile=newFile(“l(fā)zs.mp3”);myFile=newFile(“l(fā)yrics”,”lzs.txt”);在Java中,沒有表示文件路徑(目錄)的類,而是將文件路徑也當(dāng)作文件來處理File對象常用方法(1)和文件名相關(guān)StringgetName()StringgetPath()StringgetAbsolutePath()StringgetParent()booleanrenameTo(FilenewName)文件檢測booleanexists()booleancanWrite()booleancanRead()booleanisFile()booleanisDirectory()booleanisAbsolute()File對象常用方法(2)獲取常規(guī)文件信息longlastModified()longlength()booleandelete()目錄操作booleanmkdir()String[]list()文件過濾通過在File中的list()方法中加入FileNameFilter參數(shù),可以只將滿足條件的文件列出來FileNameFilter是一個接口,只有一個accept()方法需要實現(xiàn)正則表達(dá)式正則表達(dá)式(RegularExpression)是一種可以用于模式匹配和替換的規(guī)范,一個正則表達(dá)式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)組成的文字模式,它用于描述在查找文字主體時待匹配的一個或多個字符串。正則表達(dá)式作為一個模板,將某個字符模式與所搜索的字符串進(jìn)行匹配。38正則表達(dá)式主要用途搜索和替換(SearchandReplace)驗證(Verification)檢查某個字符串是否符合特定的匹配模式。例如,對Email地址的格式、電話號碼的格式進(jìn)行驗證等;解析(Parse)解析就是從一個文本中獲取有用信息的過程,比如,從HTML文件中提取超鏈接。模式(1)文字:表達(dá)式內(nèi)任何不具有特殊意義的字符都被看作是一個文字,并與自身匹配。量詞:某些字符或表達(dá)式,它們被用來計算一個文字或分組可以在字符序列中出現(xiàn)的次數(shù),以便該序列與表達(dá)式匹配。分組是由圓括號內(nèi)的一組字符指定的?:表示出現(xiàn)一次或根本不出現(xiàn);*:表示出現(xiàn)零次或一次以上(含一次);+:表示出現(xiàn)一次或多次;{n}:剛好出現(xiàn)n次;{m,}:至少出現(xiàn)m次;{m,n}:出現(xiàn)m~n次。模式(2)字符類一個字符類就是方括號內(nèi)的一個字符集,其中,匹配可以是括號內(nèi)的任意一個字符\d:數(shù)字(0到9)\D:非數(shù)字\s:空白字符,如制表符或換行符\S:非空白字符\w:單字字符(a到z、A到Z、0到9以及下劃線)\W:非單字字符(其它任意字符)[abcdef]*:只包含字母“a”、“b”、“c”、“d”、“e”、“f”的任意字符序列41模式(3)Posix字符類字符類僅在用于US-ASCII比較時才有效\p{Lower}:小寫字符\p{Upper}:大寫字符\p{ASCII}:所有ASCII字符\p{Alpha}:字母字符(\p{Lower}與\p{Upper}相結(jié)合)\p{Digit}:從0到9的數(shù)字\p{Alnum}:Alpha和number,字母數(shù)字字符42模式(4)范圍:使用短線“-”來指定包括一定范圍字符的字符類。例如,[A-Z]表示從A到Z的大寫字母否定:脫字符(^)否定字符類的內(nèi)容。例如,[^A-Z]表示除A到Z之外的任何字符。邊界:表示匹配的邊界^:表示輸入的開始$:表示輸入的結(jié)束\b:字邊界\B:非字邊界\A:輸入的開始\z:輸入的結(jié)束43模式(5)邏輯表示表達(dá)式之間的操作X|Y:X或者Y中的字符XY:X中的任何字符后面緊跟著Y組表示將幾個表達(dá)式組成一個整體。它只有一個操作符“()”(X):表達(dá)式為一組。例如,(X)是一個組。而(X(Y)),是表示嵌套的組,它可以分解成幾個組,各個組都用索引來唯一指定,整個組的索引一定為0。組的索引(或者順序)是從左到右、從外到內(nèi)的。上面的(X(Y))包含了兩個組:(X(Y))本身(索引為0)以及(Y)(索引為1)。44典型的用處驗證郵件地址格式是否正確將文章中的URL地址自動轉(zhuǎn)換成鏈接將文章中的數(shù)字變成電話在一個字符串中搜索特定格式的字符串...45Java中使用正則表達(dá)式Pattern類:封裝模式Matcher類:匹配類DeprecationDeprecation關(guān)鍵字可用于標(biāo)記類、屬性和方法,表明這些類,屬性或方法已過時、不再提倡使用Deprecation成分均存在相應(yīng)的替代類、屬性或方法,這些替代者可能采用了更標(biāo)準(zhǔn)化的命名慣例、或功能更適用在移植Java代碼時,可使用–Xlint:deprecation選項獲得有關(guān)的詳細(xì)信息:javac–Xlint:deprecationTest.java如果想讓某個類、屬性、方法變成“不建議使用”,可以在類/屬性/方法定義前面加上@Deprecated,如:@Deprecatedpublicvoidmethod()...日期處理(1)Date類的問題:設(shè)計時候考慮不周,存在諸多問題,大部分方法和構(gòu)造器已經(jīng)Deprecated,不推薦使用Calendar類:用來在大部分場合替代Date類Calendar是一個抽象類,用來表示日歷的概念通過Calendar的靜態(tài)方法getInstance()來獲得一個Calendar實例Calendar常用方法:intadd(intfield,intvalue):改變對應(yīng)的field的值,注意在這里之所以是“改變”而不是“增加”,是因為除了增加外,還可以減少對應(yīng)field的值,只要給它一個負(fù)值就可以了。日期處理(2)Calendar常用方法:voidroll(intfield,intvalue):和add()方法類似,區(qū)別在于,即使加上value后對應(yīng)的field值已經(jīng)超出了它所能表示的最大范圍,也不會改變更大的field的值intget(intfield):根據(jù)指定的field,返回相應(yīng)的時間值。通常,參數(shù)field使用Calendar的靜態(tài)常量來表示,例如:想得到當(dāng)前的月份,可以使用方法get(Calendar.MONTH)來獲得intgetActualMaximum(intfield):獲得指定的時間字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新疆警察學(xué)院《創(chuàng)新性思維與方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年德州職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫
- 海南三亞仕泓4.8MW分布式光伏項目
- 2024年二級造價師考試題庫
- 《交通部財務(wù)司》課件
- 工廠豬肉采購合同范例
- 別墅燈具安裝合同范例
- 物流公司發(fā)票合同范例
- 物品抵還合同范例
- 中介委托租房電子合同范例
- 廣州英語小學(xué)六年級英語六上冊作文范文1-6單元
- 陶笛欣賞課件
- 中國戲曲 昆曲學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 工廠車間安全培訓(xùn)試題附參考答案(能力提升)
- 企業(yè)內(nèi)部審計流程規(guī)范與操作指南
- 小學(xué)生食品安全教育教案(共十五課時)
- 農(nóng)場場長、副場長崗位責(zé)任制
- 起訴申請書范文
- 小數(shù)除以小數(shù)豎式計算題100道及答案
- 河南省鄭州市管城回族區(qū)2023-2024學(xué)年六年級上學(xué)期期末數(shù)學(xué)試題+
- 2024年全國職業(yè)院校技能大賽中職組(母嬰照護(hù)賽項)考試題庫(含答案)
評論
0/150
提交評論