Java語言程序設(shè)計(jì)-教案56學(xué)時(shí)-第8章_第1頁
Java語言程序設(shè)計(jì)-教案56學(xué)時(shí)-第8章_第2頁
Java語言程序設(shè)計(jì)-教案56學(xué)時(shí)-第8章_第3頁
Java語言程序設(shè)計(jì)-教案56學(xué)時(shí)-第8章_第4頁
Java語言程序設(shè)計(jì)-教案56學(xué)時(shí)-第8章_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

進(jìn)度計(jì)

學(xué)時(shí)教學(xué)方法與手段

授課內(nèi)容劃

分配

課堂講授(學(xué)時(shí))上機(jī)實(shí)踐(學(xué)時(shí))(周次)

Java語后入IJ

標(biāo)識(shí)符、關(guān)鍵字和數(shù)據(jù)類型6421?2

運(yùn)算符、表達(dá)式和語句

類與對(duì)象141042?5

子類與繼承6425-7

接口與實(shí)現(xiàn)4227-8

內(nèi)部類與異常類2208

常用實(shí)用類6429-10

組件及事件處理64210-11

輸入、輸出流22012

JDBC與MySQL數(shù)據(jù)庫(kù)42212-13

Java多線程機(jī)制22013

Java網(wǎng)絡(luò)的基本知識(shí)22014

總結(jié)22014

總學(xué)時(shí)564016

各章教學(xué)實(shí)施計(jì)劃

章節(jié)題目第8章常用實(shí)用類學(xué)時(shí)

2

8.1節(jié)一8.3節(jié)

教學(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é)

參考書目(含參考書、文獻(xiàn)等)具體內(nèi)容:

參考書對(duì)應(yīng)章節(jié)

課堂教學(xué)實(shí)施計(jì)劃

教學(xué)過程設(shè)計(jì):復(fù)習(xí)________一分鐘;授新課95一分鐘

第13課

討論.5一分鐘;其它_________一分鐘

授課類型(請(qǐng)打J):理論課J討論課口實(shí)驗(yàn)課口習(xí)題課口其它口

教學(xué)方式(請(qǐng)打J):講授J討論口示教口指導(dǎo)口其它口

教學(xué)手段(請(qǐng)打J):多媒體模型口實(shí)物口掛圖口音像口其它J

主要內(nèi)容

基本內(nèi)容:

?String類

?StringTokenizer類

?Scanner類

重點(diǎn):掌握String類,StringTokenizer類、Scannner類的使用。

難點(diǎn):StringTokenizer類、Scannner。

第8章常用實(shí)用類

§8.1String類

Java專門提供了用來處理字符序列的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ì)象。

例子1

Example8_l.java

publicclassExample8_l{

publicstaticvoidmain(Stringargs[]){

Stringhello="你好”;

StringtestOne="你"好";//【代碼1】

System,out.printIn(hello==testOne);//輸出結(jié)果是true

System.out.printIn(n==testOne);//輸出結(jié)果是true

System.out.printIn(n==hello);//輸出結(jié)果是true

Stringyou="你";

Stringhi=“好”;

StringtestTwo=you+hi;//【代碼2】

System,out.printIn(hello==testTwo);//輸出結(jié)果是false

StringtestThree=you+hi;

System,out.printIn(testTwo==testThree);//輸出結(jié)果是false

)

8.1.3String類的常用方法

1.publicintlength0

2.publicbooleanequals(Strings]

下面的例子2說明了equals的用法。

例子2

Example8_2.java

publicclassExample8_2{

publicstaticvoidmain(Stringargs[]){

Stringsizs2;

si=newString("天道酬勤”);

s2=newString("天道酬勤”);

System,out.printIn(si.equals(s2));//輸出結(jié)果是:true

System.out.printIn(sl==s2);//輸出結(jié)果是:false

Strings3,s4;

s3=nwearestudents**;

s4=newString(nwearestudents**);

System,out.printIn(s3.equals(s4));//輸出結(jié)果是:true

System.out.printIn(s3==s4);//輸出結(jié)果是:false

Strings5,s6;

s5="勇者無敵";

s6="勇者無敵";

System.out.printin(s5.equals(s6));//輸出結(jié)果是:true

System.out.printIn(s5==s6);//輸出結(jié)果是:true

}

)

3.publicbooleanstartsWith(Strings)、publicbooleanendsWith(Strings)方法

4.publicintcompareTo(Strings)方法

按字典序比較兩個(gè)String對(duì)象還可以使用publicintcompareToIgnoreCase(Strings)方

法,該方法忽略大小寫。

下面的例子3中使用java,util包中的Arrays調(diào)用sort方法和自己編寫SortString類中

的sort方法將一個(gè)String數(shù)組按字典序排列。

例子3

SortString.java

publicclassSortstring{

publicstaticvoidsort(Stringa[]){

intcount=0;

for(inti=0;i<a.length-1;i++){

for(intj=i+l;j<a.length;j++){

if(a[j],compareTo(a[i])<0){

Stringtemp=a[i];

a[i]=a[j];

a[j]=temp;

)

)

)

)

)

Example8_3.java

importjava.util.

publicclassExample8_3{

publicstaticvoidmain(Stringargs[]){

String[]a={"melon","appl一","p一ar","banana"};

String[]b={“西瓜“,“蘋果“,”梨“,“香蕉;

System.out.printIn("使用Sortstring類的方法按字典序排列數(shù)組a:”);

Sortstring.sort(a);

for(inti=0;i<a.length;i++){

System.out.print(”[i]);

}

System.out.printIn("");

System.out.printIn("使用類庫(kù)中的Arrays類,按字典序排列數(shù)組b:“);

Arrays.sort(b);

for(inti=0;i<b.length;i++){

System.out.print(”n+b[i]);

}

}

)

5.publicbooleancontains[Strings]

6.publicintindexOf(Strings)和publicintlastIndexOf(Strings)

7.publicStringsubstringfintstartpoint)

8.publicStringtrim()

8.1.4字符串與基本數(shù)據(jù)的相互轉(zhuǎn)化

java,lang包中的Integer類調(diào)用其類方法publicstaticintparselnt(Strings)可以將

由“數(shù)字”字符組成的字符序列,如〃876〃,轉(zhuǎn)化為int型數(shù)據(jù),例如:

intx;

Strings=〃876〃;

x=Integer,parselnt(s);

例子4求若干個(gè)數(shù)之和,若干個(gè)數(shù)從鍵盤輸入。

例子4

Example8_4.java

publicclassExample8_4{

publicstaticvoidmain(Stringargs[]){

doublesum=0,item=0;

booleancomputable=true;

for(Strings:args){

try{item=Double.pars一Double(s);

sum=sum4-item;

)

catch(NumberFormatExceptione){

System.out.printIn("您輸入了非數(shù)字字符:"+e);

computable=false;

)

)

if(computable)

System.out.printin(nsum=n+sum);

)

)

8.1.5對(duì)象的字符串表示

下面例子5中的TV類重寫了toStringO方法,并使用super調(diào)用隱藏的toStringO方法。

例子5

TVjava

publicclassTV{

doubleprice;

publicvoidsetPrice(doublem){

price=m;

}

publicStringtoString(){

StringoldStr=super.toString();

returnoldStr+”\n這是電視機(jī),價(jià)格是:H+price;

)

)

Example8_5.java

publicclassExample8_5{

publicstaticvoidmain(Stringargs[]){

Datedate=newDate();

System.out.printin(date.toString());

TVtv=newTV();

tv.setPrice(5897?98);

System.out.printin(tv.toString());

)

}

8.1.6字符串與字符、字節(jié)數(shù)組

1.字符串與字符數(shù)組

例子6具體地說明了getChars()和toCharArray()方法的使用。

例子6

Example8_6.java

publicclassExample8_6{

publicstaticvoidmain(Stringargs[]){

char[]a,c;

Strings="1945年8月15日是抗戰(zhàn)勝利日

a=newchar[4];

s.getChars(ll,15,a,0);//數(shù)組a的單元依次放的字符是,抗,,,戰(zhàn):勝,,'

利、

System.out.printin(a);

c=長(zhǎng)假期間,學(xué)校都放假了”.toCharA工ray();

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)用

getBytesO返回一個(gè)字節(jié)數(shù)組d,其長(zhǎng)度為8,該字節(jié)數(shù)組的d[0]、d[l]、d[2]和d[3]單元分

別是字符J、a、v和a的編碼,第d[4]和d[5]單元存放的是字符‘你'的編碼(GB2312編碼中,

一個(gè)漢字占2個(gè)字節(jié)),第d[6]和d[7]單元存放的是字符'好'的編碼。

例子7

Example8_7.java

publicclassExample8_7{

publicstaticvoidmain(Stringargs[]){

byted[]="Java你好".getBytes();

System.out.printin(“數(shù)組d的長(zhǎng)度是:"+d.length);

Strings=newString(d,6,2);//輸出:好

System.out.printin(s);

s=newString(d,0,6);

System,out.printin(s);//輸出:Java你

)

}

3.字符串的加密算法

例子8

EncryptAndDecrypt.java

publicclassEncryptAndDecrypt{

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.java

importjava,util,Scanner;

publicclassExample8_8{

publicstaticvoidmain(Stringargs[]){

Stringsourcestring=”今晚十點(diǎn)進(jìn)攻“;

EncryptAndDecryptperson=newEncryptAndDecrypt();

System.out.printIn("輸入密碼力口密:n+sourceString);

Scannerscanner=newScanner(System.in);

Stringpassword=scanner.nextLine();

Stringsecret=person.encrypt(sourcestring,password);

System.out.printin("密文:"+secret);

System.out.printIn("輸入解密密碼”);

password=scanner.nextLine();

Stringsource=person.decrypt(secret,password);

System.out.printIn("明文:n+source);

}

}

8.1.7正則表達(dá)式及字符串的替換與分解

1.正則表達(dá)式

正則表達(dá)式是一個(gè)String對(duì)象的字符序列,該字符序列中含有具有特殊意義字符,這些特

殊字符稱做正則表達(dá)式中的元字符。

表8.1列出了常用的元字符及其意義。

注:有關(guān)正則表達(dá)式的細(xì)節(jié)可查閱java.util,regex包中的Pattern類。

例子9程序判斷用戶從鍵盤輸入的字符序列是由英文字母,數(shù)字或下劃線所組成。

例子9

Example8_9.java

importjava.util.Scanner;

publicclassExample8_9{

publicstaticvoidmain(Stringargs[]){

Stringregex=n[a-zA-ZI0-9|_];

Scannerscanner=newScanner(System.in);

Stringstr=scanner.nextLine();

if(str.matches(regex)){

System.out.printIn(str+”是英文字母,數(shù)字或下劃線構(gòu)成“);

)

else{

System.out.printIn(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()方法。

例子10

Example8_10.java

publicclassExample8_10{

publicstaticvoidmain(Stringargs[]){

Stringstr="歡迎大家訪問了解、參觀公司”;

Stringregex=

n(http://|www)\56?\\w+\56{1}\\w+\56{1}\\p{Alpha}+n;

System,out.printf("替換\n\"%s\”\r^的網(wǎng)站鏈接信息后得到的字符串:

\n”,str);

str=str.replaceAll(reg一x,”******”);

System.out.printIn(str);

Stringmoney==89,235,678¥”;

System.out.print(money+"轉(zhuǎn)化成數(shù)字;

Strings=money.replaceAll("[^\\p{Sc}]n,nn);//”\\p{Sc}"可匹

配任何

貨幣符號(hào)

longnumber=Long.parseLong(s);

System.out.printin(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中,用戶從鍵盤輸入一行文本,程序輸出其中的單詞。用戶從鍵盤輸入whoare

you(Caven?)觀察運(yùn)行效果。

例子11

Example8_ll.java

importjava.util.Scanner;

publicclassExample8_ll{

publicstaticvoidmain(Stringargs[]){

System.out.printIn("一行文本:");

Scannerreader=newScanner(System.in);

Stringstr=reader.nextLine();

//regex匹配由空格、數(shù)字和!":;<=>?@]\廣_'{1}~組成的字符序

Stringregex=n[\\s\\d\\p{Punct}]+H;

Stringwords口=str.split(r一gex);

for(inti=0;i<words.length;i++){

intm=i+1;

System.out.printin("單詞"+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ù)字的和。

例子12

Example8_12.java

importjava.util.*;

publicclassExample8_12{

publicstaticvoidmain(Stringargs[]){

StringshoppingReceipt="牛奶:8.5圓,香蕉3.6圓,醬油:2.8圓”;

PriceTokenlookPriceMess=newPriceToken();

System.out.printIn(shoppingReceipt);

doublesum=lookPriceMess.getPriceSum(shoppingReceipt);

System.out.printf("購(gòu)物總價(jià)格%一7.2£”,sum);

intamount=lookPriceMess.getGoodsAmount(shoppingReceipt);

doubleaver=lookPriceMess.getAverPrice(shoppingReceipt);

System.out.printf(”\n商品數(shù)目:為d,平均價(jià)格:%一7.2f”,amount,aver);

}

}

PriceToken.java

iimportjava.util.*;

publicclassPriceToken{

publicdoublegetPriceSum(StringshoppingReceipt){

Stringregex="「0123456789.]+";〃匹配非數(shù)字字符序列

shoppingReceipt=shoppingReceipt.replaceAll(regex,"#“);

//replaceAll方法見8.1.6節(jié)的例子10

StringTokenizerfenxi=newStringTokenizer(shoppingReceipt,n#H);

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/goodsiXmount;

)

publicintgetGoodsAmount(StringshoppingReceipt){

Stringregex=n[A0123456789.]+n;

shoppingReceipt=shoppingReceipt.replaceAll(regex,n#n);

StringTokenizerfenxi=newStringTokenizer(shoppingReceipt,n#H);

intamount=fenxi.countTokens();

returnamount;

}

}

8.3Scanner類

本節(jié)學(xué)習(xí)怎樣使用Scanner類的對(duì)象從字符序列中解析出程序所需要的數(shù)據(jù)。

1.Scanner對(duì)象

Scanner對(duì)象可以解析字符序列中的單詞

下面的例子13使用正則表達(dá)式:

Stringregex="「0123456789.]+"〃(匹配所有非數(shù)字字符序列)

作為分隔標(biāo)記,解析”市話76.8元,長(zhǎng)途:167.38元,短信12.68元“,以及''牛奶:8.5圓,香

蕉3.6圓,醬油:2.8圓''中的價(jià)格,并計(jì)算價(jià)格之和。

例子13

Example8_13.java

publicclassExample8_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("%$\11總價(jià):%,2£圓\11”,cost,priceSum);

)

)

GetPrice.java

importjava.util,

publicclassGetPrice{

publicstaticdoublegivePriceSum(Stringcost){//static方法,類名

可調(diào)用

Scannerscanner=newScanner(cost);

scanner.useDelimiter("「0123456789.]+”);//scann一r設(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í)用類

當(dāng)U-4-9

字時(shí)

8.4節(jié)―8.12節(jié)

教學(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類,了解日期格式化。

?Malh類,Biglnleger與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é)

參考書目(含參考書、文獻(xiàn)等)具體內(nèi)容:

參考書對(duì)應(yīng)章節(jié)

課堂教學(xué)實(shí)施計(jì)劃

教學(xué)過程設(shè)計(jì):復(fù)習(xí)一5一分鐘;授新課90一分鐘

第14課

討論.5一分鐘;其它___________一分鐘

授課類型(請(qǐng)打J):理論課J討論課口實(shí)驗(yàn)課口習(xí)題課口其它口

教學(xué)方式(請(qǐng)打J):講授J討論口示教口指導(dǎo)口其它口

教學(xué)手段(請(qǐng)打J):多媒體模型口實(shí)物口掛圖口音像口其它J

主要內(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.append方法

2.publiccharcharAt(intn)和publicvoidsetCharAt(intn,charch)

3.StringBufferinsert(intindex,Stringstr)

4.publicStringBufferreverseO

5.StringBufferdelete(intstartindex,intendindex)

6.StringBufferreplace(intstartindex,intendindex,Stringstr)

下面的例子14使用StringBuffer類的常用方法,運(yùn)行效果如圖8.180

例子14

Example8_14.java

publicclassExample8_14{

publicstaticvoidmain(Stringargs[]){

StringBufferstr=newStringBuffer();

str.append(〃大家好〃);

System.out.println(〃str:〃+str);

System,out.printIn("length:〃+str?length());

System,out.printin("capacity:〃+str?capacity());

str.setCharAt(0,'w');

str.setCharAt(1,'e');

System,out.printin(str);

str.insert(2,〃areall");

System,out.println(str);

intindex=str.indexOf(〃好〃);

str.replace(index,str.length(),z,right");

System,out.printin(str);

)

)

8.5Date與Calendar類

程序設(shè)計(jì)中可能需要日期、時(shí)間等數(shù)據(jù),本節(jié)介紹java,util包中的Date和Calendar類,

二者的實(shí)例可用于處理和日期、時(shí)間相關(guān)的數(shù)據(jù)。

8.4.1Date類

1.使用無參數(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ù)。

例子15

Example8_15.java

importjava.util.

publicclassExample8_15{

publicstaticvoidmain(Stringargs[]){

Calendarcalendar=Calendar.getlnstance();

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.printin(,z〃+hour+〃時(shí)〃+minute+〃分〃+second+〃秒〃);

inty=2012,m=9,d=1;

calendar,set(y,m-l,d);〃將日歷翻到2012年九月一日,注意8表示九月

longtimel=calendar.getTimelnMillis();

y=2016;

m=7;

day=1;

calendar,set(y,m-l,d);〃將日歷翻到2016年七月一日

longtime2=calendar.getTimelnMillis();

longsubDay=(time2-timel)/(1000*60*60*24);

System.out.printin(,,/z+newDate(time2));

System,out.printin(〃與〃+newDate(timel));

System.out.printin(〃相隔〃+subDay+〃天〃);

)

)

下面的例子16輸出2022年6月的日歷。

例子16

Example8_16.java

publicclassExample8_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.printfc);

)

for(inti=0;i<a.length;i++){〃輸出數(shù)組a

if(i%7==0)

System,out.printin(〃〃);//換彳亍

System.out.printf(〃%4s〃,a[i]);

)

)

)

CalendarBean.java

importjava.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.getlnstance();

rili.set(year,month-1,1);

intweekDay=rili.get(Calendar.DAY_OF_WEEK)-1;//計(jì)算出1號(hào)的星期

intday=O;

if(month==l|1month==3|Imonth==5||month==7||month==8||month==10|

Imonth==12)

day=31;

if(month==4||month==6||month==9||month==ll)

day=30;

if(month==2){

if(((year%4==0)&&(year%100!=0))||(year%400==0))

day=29;

else

day=28;

)

for(inti=0;i<weekDay;i++)

a[i]=〃〃;

for(inti=weekDay,n=l;i<weekDay+day;i++){

a[i]=String.valueOf(n);

n++;

)

for(inti=weekDay+day;i<a.length;i++)

a[i]二〃〃;

returna;

8.6日期的格式化

程序可能希望按著某種習(xí)慣來輸出時(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)稱星期四,意大利用gi。簡(jiǎn)稱星期四等。如果想用特定地區(qū)的星期格式來表示日期中的星期,

可以用format的重載方法:

format(Localelocale,格式化模式,日期列表);

其中的參數(shù)locale是一個(gè)Locale類的實(shí)例,用于表示地域。,

8.7Math、Biginteger和Random類

8.7.1Math類

在編寫程序時(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類。

例子17

Example8_17.java

importjava.math.*;

publicclassExample8_17{

publicstaticvoidmain(Stringargs[]){

doublea=5.0;

doublest=Math,sqrt(a);

System,out.printin(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(,z%f四舍五入的整數(shù):%d\n〃,12.9,Math,round(12.9));

System,out.printf(〃%f四舍五入的整數(shù):%d\n〃,T2.6,Math,round(-12.6));

Bigintegerresult=newBiginteger(/z0z,),

one=newBiginteger(“123456789〃),

two=newBiginteger(“987654321〃);

r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論