版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEPAGE26授課內(nèi)容學(xué)時(shí)分配教學(xué)方法與手段進(jìn)度計(jì)劃(周次)課堂講授(學(xué)時(shí))上機(jī)實(shí)踐(學(xué)時(shí))Java語(yǔ)言入門(mén)標(biāo)識(shí)符、關(guān)鍵字和數(shù)據(jù)類型運(yùn)算符、表達(dá)式和語(yǔ)句6421~2類與對(duì)象141042~5子類與繼承6425-7接口與實(shí)現(xiàn)4227-8內(nèi)部類與異常類2208常用實(shí)用類6429-10組件及事件處理64210-11輸入、輸出流22012JDBC與MySQL數(shù)據(jù)庫(kù)42212-13Java多線程機(jī)制22013Java網(wǎng)絡(luò)的基本知識(shí)22014總結(jié)22014總學(xué)時(shí)=SUM(ABOVE)56=SUM(ABOVE)40=SUM(ABOVE)16
各章教學(xué)實(shí)施計(jì)劃章節(jié)題目第8章常用實(shí)用類8.1節(jié)-8.3節(jié)學(xué)時(shí)2教學(xué)目的、要求(分了解、理解、掌握三個(gè)層次):掌握String類、StringTokenizer類、Scanner類的常用方法。教學(xué)內(nèi)容(包括基本內(nèi)容、重點(diǎn)、難點(diǎn)):基本內(nèi)容:String類StringTokenizer類Scanner類重點(diǎn):掌握String類,StringTokenizer類、Scannner類的使用。難點(diǎn):StringTokenizer類、Scannner。討論、思考題、作業(yè):習(xí)題82(1),(3),(4)3(1)-(5)預(yù)習(xí)第8章8.4-8.12節(jié)參考書(shū)目(含參考書(shū)、文獻(xiàn)等)具體內(nèi)容:參考書(shū)對(duì)應(yīng)章節(jié)
課堂教學(xué)實(shí)施計(jì)劃第13課教學(xué)過(guò)程設(shè)計(jì):復(fù)習(xí)分鐘;授新課95分鐘討論5分鐘;其它分鐘授課類型(請(qǐng)打√):理論課√討論課□實(shí)驗(yàn)課□習(xí)題課□其它□教學(xué)方式(請(qǐng)打√):講授√討論□示教□指導(dǎo)□其它□教學(xué)手段(請(qǐng)打√):多媒體模型□實(shí)物□掛圖□音像□其它√主要內(nèi)容基本內(nèi)容:String類StringTokenizer類Scanner類重點(diǎn):掌握String類,StringTokenizer類、Scannner類的使用。難點(diǎn):StringTokenizer類、Scannner。第8章常用實(shí)用類§8.1String類Java專門(mén)提供了用來(lái)處理字符序列的String類。String類在java.lang包中,由于java.lang包中的類被默認(rèn)引入,因此程序可以直接使用String類。需要注意的是Java把String類聲明為final類,因此用戶不能擴(kuò)展String類,即String類不可以有子類。8.1.1構(gòu)造String對(duì)象String對(duì)象,習(xí)慣地被翻譯為字符串對(duì)象。1.常量對(duì)象2.String對(duì)象3.引用String常量8.1.2字符串的并置String對(duì)象可以用"+"進(jìn)行并置運(yùn)算,即首位相接得到一個(gè)新的String對(duì)象。例子1Example8_1.javapublicclassExample8_1{publicstaticvoidmain(Stringargs[]){Stringhello="你好";StringtestOne="你"+"好";//【代碼1】System.out.println(hello==testOne);//輸出結(jié)果是trueSystem.out.println("你好"==testOne);//輸出結(jié)果是trueSystem.out.println("你好"==hello);//輸出結(jié)果是trueStringyou="你";Stringhi="好";StringtestTwo=you+hi;//【代碼2】System.out.println(hello==testTwo);//輸出結(jié)果是falseStringtestThree=you+hi;System.out.println(testTwo==testThree);//輸出結(jié)果是false}}8.1.3String類的常用方法1.publicintlength()2.publicbooleanequals(Strings)下面的例子2說(shuō)明了equals的用法。例子2Example8_2.javapublicclassExample8_2{publicstaticvoidmain(Stringargs[]){Strings1,s2;s1=newString("天道酬勤");s2=newString("天道酬勤");System.out.println(s1.equals(s2)); //輸出結(jié)果是:trueSystem.out.println(s1==s2); //輸出結(jié)果是:falseStrings3,s4;s3="wearestudents";s4=newString("wearestudents");System.out.println(s3.equals(s4)); //輸出結(jié)果是:trueSystem.out.println(s3==s4); //輸出結(jié)果是:falseStrings5,s6;s5="勇者無(wú)敵";s6="勇者無(wú)敵";System.out.println(s5.equals(s6)); //輸出結(jié)果是:trueSystem.out.println(s5==s6); //輸出結(jié)果是:true}}3.publicbooleanstartsWith(Strings)、publicbooleanendsWith(Strings)方法4.publicintcompareTo(Strings)方法按字典序比較兩個(gè)String對(duì)象還可以使用publicintcompareToIgnoreCase(Strings)方法,該方法忽略大小寫(xiě)。下面的例子3中使用java.util包中的Arrays調(diào)用sort方法和自己編寫(xiě)SortString類中的sort方法將一個(gè)String數(shù)組按字典序排列。例子3SortString.javapublicclassSortString{publicstaticvoidsort(Stringa[]){intcount=0;for(inti=0;i<a.length-1;i++){for(intj=i+1;j<a.length;j++){if(a[j].compareTo(a[i])<0){Stringtemp=a[i];a[i]=a[j];a[j]=temp;}}}}}Example8_3.javaimportjava.util.*;publicclassExample8_3{publicstaticvoidmain(Stringargs[]){String[]a={"melon","apple","pear","banana"};String[]b={"西瓜","蘋(píng)果","梨","香蕉"};System.out.println("使用SortString類的方法按字典序排列數(shù)組a:");SortString.sort(a);for(inti=0;i<a.length;i++){System.out.print(""+a[i]);}System.out.println("");System.out.println("使用類庫(kù)中的Arrays類,按字典序排列數(shù)組b:");Arrays.sort(b);for(inti=0;i<b.length;i++){System.out.print(""+b[i]);}}}5.publicbooleancontains(Strings)6.publicintindexOf(Strings)和publicintlastIndexOf(Strings)7.publicStringsubstring(intstartpoint)8.publicStringtrim()8.1.4字符串與基本數(shù)據(jù)的相互轉(zhuǎn)化java.lang包中的Integer類調(diào)用其類方法publicstaticintparseInt(Strings)可以將由“數(shù)字”字符組成的字符序列,如"876",轉(zhuǎn)化為int型數(shù)據(jù),例如:intx;Strings="876";x=Integer.parseInt(s);例子4求若干個(gè)數(shù)之和,若干個(gè)數(shù)從鍵盤(pán)輸入。例子4Example8_4.javapublicclassExample8_4{publicstaticvoidmain(Stringargs[]){doublesum=0,item=0;booleancomputable=true;for(Strings:args){try{item=Double.parseDouble(s);sum=sum+item;}catch(NumberFormatExceptione){System.out.println("您輸入了非數(shù)字字符:"+e);computable=false;}}if(computable)System.out.println("sum="+sum);}}8.1.5對(duì)象的字符串表示下面例子5中的TV類重寫(xiě)了toString()方法,并使用super調(diào)用隱藏的toString()方法。例子5TV.javapublicclassTV{doubleprice;publicvoidsetPrice(doublem){price=m;}publicStringtoString(){StringoldStr=super.toString();returnoldStr+"\n這是電視機(jī),價(jià)格是:"+price;}}Example8_5.javapublicclassExample8_5{publicstaticvoidmain(Stringargs[]){Datedate=newDate();System.out.println(date.toString());TVtv=newTV();tv.setPrice(5897.98);System.out.println(tv.toString());}}8.1.6字符串與字符、字節(jié)數(shù)組1.字符串與字符數(shù)組例子6具體地說(shuō)明了getChars()和toCharArray()方法的使用。例子6Example8_6.javapublicclassExample8_6{publicstaticvoidmain(Stringargs[]){char[]a,c;Strings="1945年8a=newchar[4];s.getChars(11,15,a,0);//數(shù)組a的單元依次放的字符是'抗','戰(zhàn)',勝','利'。System.out.println(a);c="十一長(zhǎng)假期間,學(xué)校都放假了".toCharArray();for(inti=0;i<c.length;i++)System.out.print(c[i]);}}2.字符串與字節(jié)數(shù)組在下面的例子7中,假設(shè)機(jī)器的默認(rèn)編碼是GB2312。String常量:"Java你好",調(diào)用getBytes()返回一個(gè)字節(jié)數(shù)組d,其長(zhǎng)度為8,該字節(jié)數(shù)組的d[0]、d[1]、d[2]和d[3]單元分別是字符J、a、v和a的編碼,第d[4]和d[5]單元存放的是字符'你'的編碼(GB2312編碼中,一個(gè)漢字占2個(gè)字節(jié)),第d[6]和d[7]單元存放的是字符'好'的編碼。例子7Example8_7.javapublicclassExample8_7{publicstaticvoidmain(Stringargs[]){byted[]="Java你好".getBytes();System.out.println("數(shù)組d的長(zhǎng)度是:"+d.length);Strings=newString(d,6,2);//輸出:好System.out.println(s);s=newString(d,0,6);System.out.println(s);//輸出:Java你}}3.字符串的加密算法例子8EncryptAndDecrypt.javapublicclassEncryptAndDecrypt{Stringencrypt(StringsourceString,Stringpassword){ //加密算法char[]p=password.toCharArray();intn=p.length;char[]c=sourceString.toCharArray();intm=c.length;for(intk=0;k<m;k++){intmima=c[k]+p[k%n]; //加密c[k]=(char)mima;}returnnewString(c); //返回密文}Stringdecrypt(StringsourceString,Stringpassword){ //解密算法char[]p=password.toCharArray();intn=p.length;char[]c=sourceString.toCharArray();intm=c.length;for(intk=0;k<m;k++){intmima=c[k]-p[k%n]; //解密c[k]=(char)mima;}returnnewString(c); //返回明文}}Example8_8.javaimportjava.util.Scanner;publicclassExample8_8{publicstaticvoidmain(Stringargs[]){StringsourceString="今晚十點(diǎn)進(jìn)攻";EncryptAndDecryptperson=newEncryptAndDecrypt();System.out.println("輸入密碼加密:"+sourceString);Scannerscanner=newScanner(System.in);Stringpassword=scanner.nextLine();Stringsecret=person.encrypt(sourceString,password);System.out.println("密文:"+secret);System.out.println("輸入解密密碼");password=scanner.nextLine();Stringsource=person.decrypt(secret,password);System.out.println("明文:"+source);}}8.1.7正則表達(dá)式及字符串的替換與分解1.正則表達(dá)式正則表達(dá)式是一個(gè)String對(duì)象的字符序列,該字符序列中含有具有特殊意義字符,這些特殊字符稱做正則表達(dá)式中的元字符。表8.1列出了常用的元字符及其意義。注:有關(guān)正則表達(dá)式的細(xì)節(jié)可查閱java.util.regex包中的Pattern類。例子9程序判斷用戶從鍵盤(pán)輸入的字符序列是由英文字母,數(shù)字或下劃線所組成。例子9Example8_9.javaimportjava.util.Scanner;publicclassExample8_9{publicstaticvoidmain(Stringargs[]){Stringregex="[a-zA-Z|0-9|_]+";Scannerscanner=newScanner(System.in);Stringstr=scanner.nextLine();if(str.matches(regex)){System.out.println(str+"是英文字母,數(shù)字或下劃線構(gòu)成");}else{System.out.println(str+"中有非法字符");}}}2.字符串的替換String對(duì)象調(diào)用publicStringreplaceAll(Stringregex,Stringreplacement)方法返回一個(gè)新的String對(duì)象,這個(gè)新的String對(duì)象的字符序列是把當(dāng)前String對(duì)象的字符序列中所有和參數(shù)regex匹配的子字符序列,用參數(shù)replacement的字符序列替換后得到字符序列。在下面的例子10中使用了replaceAll()方法。例子10Example8_10.javapublicclassExample8_10{publicstaticvoidmain(Stringargs[]){Stringstr="歡迎大家訪問(wèn)了解、參觀公司";Stringregex="(http://|www)\56?\\w+\56{1}\\w+\56{1}\\p{Alpha}+";System.out.printf("替換\n\"%s\"\n中的網(wǎng)站鏈接信息后得到的字符串:\n",str);str=str.replaceAll(regex,"******");System.out.println(str);Stringmoney="89,235,678¥";System.out.print(money+"轉(zhuǎn)化成數(shù)字:");Strings=money.replaceAll("[,\\p{Sc}]","");//"\\p{Sc}"可匹配任何貨幣符號(hào)longnumber=Long.parseLong(s);System.out.println(number);}}3.字符序列的分解String類提供了一個(gè)實(shí)用的方法publicString[]split(Stringregex),String對(duì)象調(diào)用該方法時(shí),使用參數(shù)指定的正則表達(dá)式regex作為分隔標(biāo)記分解出當(dāng)前String對(duì)象的字符序列中的單詞,并將分解出的單詞存放在String數(shù)組中。下面的例子11中,用戶從鍵盤(pán)輸入一行文本,程序輸出其中的單詞。用戶從鍵盤(pán)輸入whoareyou(Caven?)觀察運(yùn)行效果。例子11Example8_11.javaimportjava.util.Scanner;publicclassExample8_11{publicstaticvoidmain(Stringargs[]){System.out.println("一行文本:");Scannerreader=newScanner(System.in);Stringstr=reader.nextLine();//regex匹配由空格、數(shù)字和!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~組成的字符序列Stringregex="[\\s\\d\\p{Punct}]+";Stringwords[]=str.split(regex);for(inti=0;i<words.length;i++){intm=i+1;System.out.println("單詞"+m+":"+words[i]);}}}8.2StringTokenizer類當(dāng)分析一個(gè)String對(duì)象的字符序列并將字符序列分解成可被獨(dú)立使用的單詞時(shí),可以使用java.util包中的StringTokenizer類,該類有兩個(gè)常用的構(gòu)造方法。StringTokenizer(Strings):StringTokenizer(Strings,Stringdelim):例子12計(jì)算購(gòu)物小票的中的商品價(jià)格的和。程序關(guān)心是購(gòu)物小票中的數(shù)字,因此需要分解出這些數(shù)字,以便單獨(dú)處理,這樣就需要把非數(shù)字的字符序列替換成統(tǒng)一的字符,以便使用分隔標(biāo)記分解出數(shù)字,例如,對(duì)于"12#25#39.87",如果用字符#做分隔標(biāo)記,就很容易分解出數(shù)字單詞。在例子12的PriceToken類中,把購(gòu)物小票中非數(shù)字的字符序列都替換成#,然后再分解出數(shù)字單詞(價(jià)格),并計(jì)算出這些數(shù)字的和。例子12Example8_12.javaimportjava.util.*;publicclassExample8_12{publicstaticvoidmain(Stringargs[]){StringshoppingReceipt="牛奶:8.5圓,香蕉3.6圓,醬油:2.8圓";PriceTokenlookPriceMess=newPriceToken();System.out.println(shoppingReceipt);doublesum=lookPriceMess.getPriceSum(shoppingReceipt);System.out.printf("購(gòu)物總價(jià)格%-7.2f",sum);intamount=lookPriceMess.getGoodsAmount(shoppingReceipt);doubleaver=lookPriceMess.getAverPrice(shoppingReceipt);System.out.printf("\n商品數(shù)目:%d,平均價(jià)格:%-7.2f",amount,aver);}}PriceToken.javaiimportjava.util.*;publicclassPriceToken{publicdoublegetPriceSum(StringshoppingReceipt){Stringregex="[^0123456789.]+";//匹配非數(shù)字字符序列shoppingReceipt=shoppingReceipt.replaceAll(regex,"#");//replaceAll方法見(jiàn)8.1.6節(jié)的例子10StringTokenizerfenxi=newStringTokenizer(shoppingReceipt,"#");doublesum=0;while(fenxi.hasMoreTokens()){Stringitem=fenxi.nextToken();doubleprice=Double.parseDouble(item);sum=sum+price;}returnsum;}publicdoublegetAverPrice(StringshoppingReceipt){doublepriceSum=getPriceSum(shoppingReceipt);intgoodsAmount=getGoodsAmount(shoppingReceipt);returnpriceSum/goodsAmount;}publicintgetGoodsAmount(StringshoppingReceipt){Stringregex="[^0123456789.]+";shoppingReceipt=shoppingReceipt.replaceAll(regex,"#");StringTokenizerfenxi=newStringTokenizer(shoppingReceipt,"#");intamount=fenxi.countTokens();returnamount;}}8.3Scanner類本節(jié)學(xué)習(xí)怎樣使用Scanner類的對(duì)象從字符序列中解析出程序所需要的數(shù)據(jù)。1.Scanner對(duì)象Scanner對(duì)象可以解析字符序列中的單詞下面的例子13使用正則表達(dá)式:Stringregex="[^0123456789.]+"http://(匹配所有非數(shù)字字符序列)作為分隔標(biāo)記,解析"市話76.8元,長(zhǎng)途:167.38元,短信12.68元",以及"牛奶:8.5圓,香蕉3.6圓,醬油:2.8圓"中的價(jià)格,并計(jì)算價(jià)格之和。例子13Example8_13.javapublicclassExample8_13{publicstaticvoidmain(Stringargs[]){Stringcost="市話76.8元,長(zhǎng)途:167.38元,短信12.68元";doublepriceSum=GetPrice.givePriceSum(cost);System.out.printf("%s\n總價(jià):%.2f圓\n",cost,priceSum);cost="牛奶:8.5圓,香蕉3.6圓,醬油:2.8圓";priceSum=GetPrice.givePriceSum(cost);System.out.printf("%s\n總價(jià):%.2f圓\n",cost,priceSum);}}GetPrice.javaimportjava.util.*;publicclassGetPrice{publicstaticdoublegivePriceSum(Stringcost){//static方法,類名可調(diào)用Scannerscanner=newScanner(cost);scanner.useDelimiter("[^0123456789.]+");//scanner設(shè)置分隔標(biāo)記doublesum=0;while(scanner.hasNext()){try{doubleprice=scanner.nextDouble();sum=sum+price;}catch(InputMismatchExceptionexp){Stringt=scanner.next();}}returnsum;}}2.StringTokenizer和Scanner的區(qū)別本次課總結(jié)熟練掌握String類的常用方法。掌握String類的和StringBuffer類的不同,以及二者之間的聯(lián)系。使用StringTokenizer,Scannner類分析字符串,獲取字符串中被分隔符分隔的單詞。作業(yè)習(xí)題82(1),(3),(4)3(1)-(5)預(yù)習(xí)第8章8.4-8.12節(jié)本次課結(jié)束
各章教學(xué)實(shí)施計(jì)劃章節(jié)題目第8章常用實(shí)用類8.4節(jié)-8.12節(jié)學(xué)時(shí)2教學(xué)目的、要求(分了解、理解、掌握三個(gè)層次):1、掌握StringBuffer類。2、掌握Date與Calendar類,了解日期格式化。3、掌握Math類,了解BigInteger與Random類、數(shù)字格式化。4、了解Class類與Console類。5、掌握Pattern類和Matcher類。教學(xué)內(nèi)容(包括基本內(nèi)容、重點(diǎn)、難點(diǎn)):基本內(nèi)容:StringBuffer類。Date與Calendar類,了解日期格式化。Math類,BigInteger與Random類、數(shù)字格式化。Class類與Console類。Pattern類和Matcher類。重點(diǎn):Date類和Calendar類以及Math類的使用。難點(diǎn):Pattern類與Match類。討論、思考題、作業(yè):習(xí)題81,2(2),(5)3(6)-(7)4預(yù)習(xí)第9章9.1-9.4節(jié)參考書(shū)目(含參考書(shū)、文獻(xiàn)等)具體內(nèi)容:參考書(shū)對(duì)應(yīng)章節(jié)
課堂教學(xué)實(shí)施計(jì)劃第14課教學(xué)過(guò)程設(shè)計(jì):復(fù)習(xí)5分鐘;授新課90分鐘討論5分鐘;其它分鐘授課類型(請(qǐng)打√):理論課√討論課□實(shí)驗(yàn)課□習(xí)題課□其它□教學(xué)方式(請(qǐng)打√):講授√討論□示教□指導(dǎo)□其它□教學(xué)手段(請(qǐng)打√):多媒體模型□實(shí)物□掛圖□音像□其它√主要內(nèi)容基本內(nèi)容:StringBuffer類。Date與Calendar類,了解日期格式化。Math類,BigInteger與Random類、數(shù)字格式化。Class類與Console類。Pattern類和Matcher類。重點(diǎn):Date類和Calendar類以及Math類的使用。難點(diǎn):Pattern類與Match類。8.4StringBuffer類8.4.1StringBuffer對(duì)象與String類不同,StringBuffer類的對(duì)象的實(shí)體的內(nèi)存空間可以自動(dòng)地改變大小,便于存放一個(gè)可變的字符序列。StringBuffer類有三個(gè)構(gòu)造方法:StringBuffer()StringBuffer(intsize)StringBuffer(Strings)8.4.2StringBuffer類的常用方法1.a(chǎn)ppend方法2.publiccharcharAt(intn)和publicvoidsetCharAt(intn,charch)3.StringBufferinsert(intindex,Stringstr)4.publicStringBufferreverse()5.StringBufferdelete(intstartIndex,intendIndex)6.StringBufferreplace(intstartIndex,intendIndex,Stringstr)下面的例子14使用StringBuffer類的常用方法,運(yùn)行效果如圖8.18。例子14Example8_14.javapublicclassExample8_14{publicstaticvoidmain(Stringargs[]){StringBufferstr=newStringBuffer();str.append("大家好");System.out.println("str:"+str);System.out.println("length:"+str.length());System.out.println("capacity:"+str.capacity());str.setCharAt(0,'w');str.setCharAt(1,'e');System.out.println(str);str.insert(2,"areall");System.out.println(str);intindex=str.indexOf("好");str.replace(index,str.length(),"right");System.out.println(str);}}8.5Date與Calendar類程序設(shè)計(jì)中可能需要日期、時(shí)間等數(shù)據(jù),本節(jié)介紹java.util包中的Date和Calendar類,二者的實(shí)例可用于處理和日期、時(shí)間相關(guān)的數(shù)據(jù)。8.4.1Date類1.使用無(wú)參數(shù)構(gòu)造方法2.使用帶參數(shù)的構(gòu)造方法8.4.2Calendar類Calendar類在java.util包中。使用Calendar類的static方法getInstance()可以初始化一個(gè)日歷對(duì)象。下面的例子15計(jì)算了2012-9-01和2016-07-01之間相隔的天數(shù)。例子15Example8_15.javaimportjava.util.*;publicclassExample8_15{publicstaticvoidmain(Stringargs[]){Calendarcalendar=Calendar.getInstance();calendar.setTime(newDate());intyear=calendar.get(Calendar.YEAR),month=calendar.get(Calendar.MONTH)+1,day=calendar.get(Calendar.DAY_OF_MONTH),hour=calendar.get(Calendar.HOUR_OF_DAY),minute=calendar.get(Calendar.MINUTE),second=calendar.get(Calendar.SECOND);System.out.print("現(xiàn)在的時(shí)間是:");System.out.print(""+year+"年"+month+"月"+day+"日");System.out.println(""+hour+"時(shí)"+minute+"分"+second+"秒");inty=2012,m=9,d=1;calendar.set(y,m-1,d); //將日歷翻到2012年九月一日,注意8表示九月longtime1=calendar.getTimeInMillis();y=2016;m=7;day=1;calendar.set(y,m-1,d); //將日歷翻到2016年七月一日l(shuí)ongtime2=calendar.getTimeInMillis();longsubDay=(time2-time1)/(1000*60*60*24);System.out.println(""+newDate(time2));System.out.println("與"+newDate(time1));System.out.println("相隔"+subDay+"天");}}下面的例子16輸出2022年6月的日歷。例子16Example8_16.javapublicclassExample8_16{publicstaticvoidmain(Stringargs[]){CalendarBeancb=newCalendarBean();cb.setYear(2022);cb.setMonth(6);String[]a=cb.getCalendar(); //返回號(hào)碼的一維數(shù)組char[]str="日一二三四五六".toCharArray();for(charc:str){System.out.printf("%3c",c);}for(inti=0;i<a.length;i++){ //輸出數(shù)組aif(i%7==0)System.out.println(""); //換行System.out.printf("%4s",a[i]);}}}CalendarBean.javaimportjava.util.Calendar;publicclassCalendarBean{intyear=0,month=0;publicvoidsetYear(intyear){this.year=year;}publicvoidsetMonth(intmonth){this.month=month;}publicString[]getCalendar(){String[]a=newString[42];Calendarrili=Calendar.getInstance();rili.set(year,month-1,1);intweekDay=rili.get(Calendar.DAY_OF_WEEK)-1;//計(jì)算出1號(hào)的星期intday=0;if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)day=31;if(month==4||month==6||month==9||month==11)day=30;if(month==2){if(((year%4==0)&&(year%100!=0))||(year%400==0))day=29;elseday=28;}for(inti=0;i<weekDay;i++)a[i]="";for(inti=weekDay,n=1;i<weekDay+day;i++){a[i]=String.valueOf(n);n++;}for(inti=weekDay+day;i<a.length;i++)a[i]="";returna;}}8.6日期的格式化程序可能希望按著某種習(xí)慣來(lái)輸出時(shí)間,比如時(shí)間的順序:年月星期日或年月星期日小時(shí)分秒??梢灾苯邮褂肧tring類調(diào)用format方法對(duì)日期進(jìn)行格式化。8.6.1format方法format方法:format(格式化模式,日期列表)1.格式化模式2.日期列表3.格式化同一日期8.6.2不同區(qū)域的星期格式不同國(guó)家的星期的簡(jiǎn)稱或全稱有很大的不同,例如,美國(guó)用Thu簡(jiǎn)稱星期四,日本用“木”簡(jiǎn)稱星期四,意大利用gio簡(jiǎn)稱星期四等。如果想用特定地區(qū)的星期格式來(lái)表示日期中的星期,可以用format的重載方法:format(Localelocale,格式化模式,日期列表);其中的參數(shù)locale是一個(gè)Locale類的實(shí)例,用于表示地域。,8.7Math、BigInteger和Random類8.7.1Math類在編寫(xiě)程序時(shí),可能需要計(jì)算一個(gè)數(shù)的平方根、絕對(duì)值或獲取一個(gè)隨機(jī)數(shù)等。以下是Math類的常用類方法。? publicstaticlongabs(doublea)返回a的絕對(duì)值。? publicstaticdoublemax(doublea,doubleb)返回a、b的最大值。? publicstaticdoublemin(doublea,doubleb)返回a、b的最小值。等8.7.2BigInteger類BigInteger類的常用方法。? publicBigIntegeradd(BigIntegerval)返回當(dāng)前對(duì)象與val的和。? publicBigIntegersubtract(BigIntegerval)返回當(dāng)前對(duì)象與val的差。? publicBigIntegermultiply(BigIntegerval)返回當(dāng)前對(duì)象與val的積。等。下面的例子17使用Math和BigInteger類。例子17Example8_17.javaimportjava.math.*;publicclassExample8_17{publicstaticvoidmain(Stringargs[]){doublea=5.0;doublest=Math.sqrt(a);System.out.println(a+"的平方根:"+st);System.out.printf("大于等于%f的最小整數(shù)%d\n",5.2,(int)Math.ceil(5.2));System.out.printf("小于等于%f的最大整數(shù)%d\n",-5.2,(int)Math.floor(-5.2));System.out.printf("%f四舍五入的整數(shù):%d\n",12.9,Math.round(12.9));System.out.printf("%f四舍五入的整數(shù):%d\n",-12.6,Math.round(-12.6));BigIntegerresult=newBigInteger("0"),one=newBigInteger("123456789"),two=newBigInteger("987654321");result=one.add(two);System.out.println("和:"+result);result=one.multiply(two);System.out.println("積:"+result);}}8.7.3Random類使用Random類的如下構(gòu)造方法publicRandom();publicRandom(longseed);創(chuàng)建Random對(duì)象。下面的例子18演示是從1-100之間隨機(jī)得到6個(gè)不同的數(shù)。例子18Example8_18.javapublicclassExample8_18{publicstaticvoidmain(Stringargs[]){int[]a=GetRandomNumber.getRandomNumber(100,6);System.out.println(java.util.Arrays.toString(a));}}GetRandomNumberimportjava.util.*;publicclassGetRandomNumber{publicstaticint[]getRandomNumber(intmax,intamount){//1至max之間的amount個(gè)不同隨機(jī)整數(shù)(包括1和max)int[]randomNumber=newint[amount];intindex=0;randomNumber[0]=-1;Randomrandom=newRandom();while(index<amount){intnumber=random.nextInt(max)+1;booleanisInArrays=false;for(intm:randomNumber){//m依次取數(shù)組randomNumber元素的值(見(jiàn)3.7)if(m==number)isInArrays=true;//number在數(shù)組里了}if(isInArrays==false){//如果number不在數(shù)組randomNumber中:randomNumber[index]=number;index++;}}returnrandomNumber;}}8.8數(shù)字格式化程序有時(shí)候需要將數(shù)字進(jìn)行格式化,所謂數(shù)字格式化,就是按著指定格式得到一個(gè)字符序列。8.8.1format方法程序可以使用String類調(diào)用format方法對(duì)數(shù)字進(jìn)行格式化。1.格式化模式2.值列表3.格式化順序8.8.2格式化整數(shù)1.%d,%o,%x和%X2.修飾符3.?dāng)?shù)據(jù)的寬度8.8.3格式化浮點(diǎn)數(shù)1.float、Float、double和Double%f,%e(%E),%g(%G)和%a(%A)格式符可格式化float、Float、double和Double。2.修飾符3.限制小數(shù)位數(shù)與數(shù)據(jù)的“寬度”下面的例子19格式化數(shù)字。例子19Example8_19.javaimportjava.text.*;publicclassExample8_19{publicstaticvoidmain(Stringargs[]){intn=12356789;System.out.println("整數(shù)"+n+"按千分組(帶正號(hào)):");Strings=String.format("%,+d",n);System.out.println(s);doublenumber=98765.6789;System.out.println(number+"格式化為整數(shù)7位,小數(shù)3位:");s=String.format("%011.3f",number);System.out.println(s);}}8.9Class類與Console類8.9.1Class類在下面的例子20中,我們使用Class對(duì)象得到一個(gè)Rect類以及java.util包中Date類的對(duì)象。例子20Example8_20.javaimportjava.util.Date;classRect{doublewidth,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年生物化學(xué)考研題目集與知識(shí)點(diǎn)總結(jié)
- 2026年心理咨詢師能力測(cè)試心理評(píng)估與治療技術(shù)
- 2026年無(wú)人駕駛車輛控制技術(shù)AI應(yīng)用認(rèn)證題庫(kù)
- 2026年科研人才選撥競(jìng)賽科學(xué)研究原理及實(shí)踐技能應(yīng)用
- G網(wǎng)絡(luò)建設(shè)指南
- 衛(wèi)生知識(shí)試題及答案
- 危險(xiǎn)化學(xué)品法律法規(guī)、應(yīng)急處置知識(shí)培訓(xùn)考試題及答案
- 中醫(yī)康復(fù)醫(yī)學(xué)科護(hù)理分級(jí)護(hù)理制度試卷及答案
- 暗黑學(xué)心理測(cè)試題及答案
- 2025年山西電力職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)附答案解析
- 村衛(wèi)生室安全管理制度
- 龍湖物業(yè)客服培訓(xùn)課件
- 2026臺(tái)州三門(mén)金鱗招商服務(wù)有限公司公開(kāi)選聘市場(chǎng)化工作人員5人筆試模擬試題及答案解析
- 中國(guó)化學(xué)工程集團(tuán)有限公司行測(cè)筆試題庫(kù)2026
- 2026貴州遵義融媒傳媒(集團(tuán))有限公司招聘19人筆試參考題庫(kù)及答案解析
- 北森人才測(cè)評(píng)試題及答案
- 2026年中國(guó)航空傳媒有限責(zé)任公司市場(chǎng)化人才招聘?jìng)淇碱}庫(kù)及完整答案詳解1套
- 泥水平衡頂管施工安全措施
- 煤礦安全操作規(guī)程課件
- 醫(yī)院紀(jì)檢干部培訓(xùn)課件
- 二尖瓣狹窄的護(hù)理
評(píng)論
0/150
提交評(píng)論