Java程序設(shè)計(jì)基礎(chǔ)-字符串_第1頁
Java程序設(shè)計(jì)基礎(chǔ)-字符串_第2頁
Java程序設(shè)計(jì)基礎(chǔ)-字符串_第3頁
Java程序設(shè)計(jì)基礎(chǔ)-字符串_第4頁
Java程序設(shè)計(jì)基礎(chǔ)-字符串_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

新一代信息技術(shù)“十三五”系列規(guī)劃Java程序設(shè)計(jì)基礎(chǔ)教程第4章

字符串如果將編程比作建樓房,那么字符串就相當(dāng)于一塊磚,沒有了基本類型,樓還是可以蓋起來,只是會稍微費(fèi)力些。但是如果沒有了字符串,這棟樓或許就真地?zé)o法建造了。字符串是重要地類型,在目前許多開發(fā)語言中,它地身影隨處可見。目前流行地跨語言,跨平臺地開發(fā)中,字符串扮演了重要地角色,就其重要性而言,再怎么稱贊也不為過。4.1

String類及其常用API字符串由一連串地字符組成,在Java中使用雙引號""包裹表示,它可以是一個字符,也可以是一個字符序列或者由多

個字符序列組成。Java核心地類庫中定義了String類用于字符串地常用操作,同時也定義了StringBuffer與

StringBuilder類用于字符串地復(fù)雜操作想要使用字符串,首先需要對其進(jìn)行初始化,字符串地初始化可以使用字面量(字符串常量)直接定義,或者使用1.字面量初始化String

str="adc";字面量是指一個固定地值,此處“abc”就是字面量。因?yàn)樽址A砍卮嬖诘卦?此處可以通過簡化初始化地方式,直接將字面量賦值給一個字符串對象。2.使用構(gòu)造函數(shù)初始化字符串String

str_1

=

new

String();

//

無參數(shù)構(gòu)造方法String

str_2

=

new

String("adc");

//

使用字符串作為參數(shù)地構(gòu)造方法String

str_3

=

new

String(new

char[3]);

//使用字符數(shù)組作為參數(shù)地構(gòu)造方法Java

String

類中定義了這

3

種基本地初始化構(gòu)造函數(shù),從第

3

種使用一個字符數(shù)組初始化地構(gòu)造函數(shù)中不難發(fā)現(xiàn),其實(shí)字符串就是一組字符。字符串初始化地實(shí)現(xiàn)如案例

4-1

所示。案例

4-1字符串地初始化運(yùn)行結(jié)果如圖

4-1所示。圖4-1運(yùn)行結(jié)果由運(yùn)行結(jié)果可知,字符串地?zé)o參數(shù)構(gòu)造方法是將一個空字符串賦值給了字符串對象,而空字符串并不等于null,在開發(fā)地過程中千萬不要將這兩者混淆了。4.1.1

字符串常量池常量是指在程序運(yùn)行過程中不會改變地量,一般從字面形式就可以進(jìn)行判斷,也被稱為字面量。如果將池地概念簡單地理解為池塘,字符串常量池則是擁有很多字符串常量地池塘,包含著諸如“a”“BGK”“123”等字符串常量。Java虛擬機(jī)在執(zhí)行字節(jié)碼時,把字節(jié)碼解釋成具體平臺上地機(jī)器指令來執(zhí)行,這種執(zhí)行方式讓它有了極大地自由來提升性能,字符串常量池就是用來減少字符串對象創(chuàng)建分配過程中對時間與空間地消耗。字符串常量池是在Java虛擬機(jī)中單獨(dú)開辟地一塊特殊內(nèi)存,這塊內(nèi)存用于存放程序在運(yùn)行中使用到地字符串常量。每當(dāng)程序需要創(chuàng)建字符串常量地時候,Java虛擬機(jī)會先從字符串常量池中去找,如果找到了,則會返回池中地實(shí)例引用,如果找不到則會實(shí)例化一個字符串并將其放入常量池中。字符串常量池這個概念太過于抽象,結(jié)合案例4-2會更便于我們理解。案例4-2字符串不同創(chuàng)建方式耗時比較運(yùn)行結(jié)果如圖4-2所示。圖4-2運(yùn)行結(jié)果從運(yùn)行結(jié)果可以看出,創(chuàng)建一個空地字符串與只聲明一個字符串消耗地時間幾乎一樣,而使用常量池地方式幾乎不需要耗費(fèi)創(chuàng)建地時間,由此可見字符串常量池地存在意義。4.1.2 字符串常用

API字符串操作是計(jì)算機(jī)程序設(shè)計(jì)中最常見地行為,字符串對應(yīng)地操作方法也是很豐富地,常用地方法如表 4-1所示。表4-1

String類地常用方法續(xù)表String類地常用方法很多,但可以總體歸為4類:字符串查詢操作,字符串修改操作,字符串分割操作以及字符串比較操作。在學(xué)習(xí)這些功能性地方法之前,先通過案例4-3了解字符串地通用功能性方法,例如長度與是否為空。案例

4-3字符串非空判斷與長度返回運(yùn)行結(jié)果如圖

4-3所示。圖4-3運(yùn)行結(jié)果在案例中不難發(fā)現(xiàn),isEmpty對于為null地字符串是沒有返回地,length亦是如此,isEmpty僅當(dāng)length為0時返回true,否則返回false。而length則是對字符個數(shù)地統(tǒng)計(jì),空格與標(biāo)點(diǎn)也被當(dāng)作一個字符,且索引從0開始計(jì)算。1.字符串查詢操作在互聯(lián)網(wǎng)快速發(fā)展地今天,網(wǎng)購已經(jīng)成為人們生活中不可或缺地一部分。在將商品準(zhǔn)確送達(dá)客戶地過程中,詳細(xì)地址起了重要地作用。快遞員通過街道小區(qū)名稱可以到達(dá)住戶所在地大致位置,然后根據(jù)建筑地標(biāo)號與門牌號快速定位并將商品送達(dá)。在字符串操作中,同樣可以根據(jù)地址(字符所在地索引)查找字符,同時還能查找特定字符對應(yīng)地地址。字符串地查詢操作主要有按索引位置查詢與按值查詢兩種,前者是通過字符地索引位置獲取對應(yīng)位置地值,后者是通過值來獲取其所對應(yīng)地位置索引。查詢地順序可以是從前向后,也可以是從后向前,還可以指定開始查詢地索引位置。字符串查詢操作如案例4-4所示。案例

4-4字符串地查詢操作運(yùn)行結(jié)果如圖

4-4所示。圖4-4運(yùn)行結(jié)果此案例僅僅是一些簡單方法地使用,在實(shí)際應(yīng)用中,多個方法可以嵌套使用,用于達(dá)成實(shí)際地目地。例如案例

4-4

中,有一個從

12

位置開始查詢第一個

Java

所在位置地操作,就可以多個查詢方法一起使用。首先觀察字符串“Hello

Java,

Hello

JavaString”,想要反向查詢在字符串中出現(xiàn)地第一個

Java,只要定位在最后一個“Hello”之前就可以。同理,因?yàn)椤?”也在第一個

Java

之前,利用“,”所在地位置來查詢也能達(dá)到同樣地目地,代碼如下。str.lastIndexOf("Java",

str.lastIndexOf("H"))str.lastIndexOf("Java",

str.indexOf(","))2.字符串修改操作字符串地修改操作在

String

類中只有一些簡單地截取,分割與連接,較為復(fù)雜地字符串操作方法在StringBuffer與

StringBuilder

中,一般在不需要考慮性能地情況下,String

類提供地方法已經(jīng)足夠,如案例

4-5

所示。案例

4-5

字符串地修改操作運(yùn)行結(jié)果如圖

4-5

所示。圖4-5運(yùn)行結(jié)果字符串地替換操作有replace,replaceAll與repalceFirst。replace類似repalceAll,唯一地區(qū)別是

replaceAll支持正則表達(dá)式地替換方式,但是repalce只支持字符或者字符串替換,這兩個方法都是全局替換地。如果只想替換其中一個,repalceFirst是個不錯地選擇,在實(shí)際開發(fā)過程中,結(jié)合其它幾種字符串操作方法可以達(dá)到復(fù)雜地處理邏輯。在字符串中,兩個字符串相加,例如:String

str

=

"Hello";System.out.println(str

+

"

David!");System.out.println(str.concat("

David!"));運(yùn)行結(jié)果如圖4-6所示。圖4-6運(yùn)行結(jié)果從運(yùn)行結(jié)果可以看出,“+”可以實(shí)現(xiàn)與concat相同地功能,這是字符“+”重載地原因,可便于簡單地字符串地拼接操作。如果只是少量使用地簡單字符串拼接操作,直接使用“+”來實(shí)現(xiàn)更易于閱讀與維護(hù)。3.字符串分割操作之前提到,字符串其實(shí)就是一組字符地集合,那么,字符串理應(yīng)可以分割成一個個字符序列或是一組組字符序列。事實(shí)也正是如此,字符串操作類String

提供了這些功能,如案例

4-6

所示。案例

4-6

字符串地分割操作運(yùn)行結(jié)果如圖

4-7

所示。圖4-7運(yùn)行結(jié)果此案例中結(jié)合了查詢操作與修改操作,將獲取地子串中地所有e替換成了下劃線,在子串替換時直接調(diào)用了replace()方法,這是因?yàn)檫@些方法在調(diào)用后返回地也是一個字符串對象,因此這個對象仍可以繼續(xù)調(diào)用字符串地操作方法。在獲取子串時,e后面是一個空格,結(jié)合其父字符串,可以發(fā)現(xiàn)字符串地截取是含頭不含尾地截取方式,例如:String

str="Hello";

str.substring(0,1);//返回H,不返回He這是字符串比較特殊地一點(diǎn),在截取字符串地時候用indexOf需要格外小心,這個索引位置在開始截取位置與結(jié)束截取位置時需要區(qū)別對待。4.字符串比較操作字符串地比較是字符串中最常見地操作,例如之前網(wǎng)絡(luò)上很火地“4396”在某些公司地一些應(yīng)用中被限制使用了,這就涉及字符串地比較與替換操作。案例

4-7

字符串地比較操作運(yùn)行結(jié)果如圖

4-8

所示。圖4-8運(yùn)行結(jié)果比較字符串地值使用equals,是否含有該字符串地比較使用contains。值得一提地是,pareTo方法在比較長度相同地字符串地時候,會返回第一個不相同地字符地字典值地差值,該差值可能為正也可能為負(fù);如果兩個字符串地長度不相同,那么該方法會返回兩個字符串地長度差。另外,equals與pareTo都包含不區(qū)分大小寫地比較方法,equalsIgnoreCase與pareToIgnoreCase也是需要注意地。在Java中字符是嚴(yán)格區(qū)分大小寫地,我們從“字符串SUN與字符串sun是否相等:false”與“字符串SUN與字符串sun是否忽略大小寫相等:true”地輸出中就能得出這個結(jié)論。所以在實(shí)際開發(fā)中,如果不需要考慮大小寫地情況,可以使用IgnoreCase結(jié)尾地方法,或者全部轉(zhuǎn)換成大寫或小寫之后再進(jìn)行比較。4.1.3

拓展:不變地字符串String

Java 中最常用地類之一,同時String 類也是

final 關(guān)鍵字限定地類。在Java 中,字符使用

unicode 編碼,每個字符占兩位,漢字也只占用兩位,但是屬于一個字符。1.關(guān)鍵字:finalfinal

Java 中是一個保留地關(guān)鍵字,可以聲明成員變量,方法,類以及本地變量。一旦妳將引用聲明作

final,妳將不能改變這個(1)限定變量:凡是對成員變量或者本地變量(在方法中地或者代碼塊中地變量稱為本地變量)聲明為final地都叫作

final變量。final變量經(jīng)常與static關(guān)鍵字一起使用,作為常量,例如:public

static

final

String

ZERO

=

“0”;(2)限定方法:final也可以聲明方法。方法前面加上

final關(guān)鍵字,代表這個方法不可以被子類地方法重寫。如果妳認(rèn)為一個方法地功能已經(jīng)足夠完整了,子類中不需要改變地話,妳可以聲明此方法為final。final方法比非final方法要快,因?yàn)樵诰幾g地時候已經(jīng)靜態(tài)綁定了,不需要在運(yùn)行時再動態(tài)綁定,例如:public

final

String

getName(){return

“Name”;}(3)限定類:使用final來修飾地類叫作final類。

final類地功能通常是完整地,它們不能被繼承。Java中有許多類是final地,譬如String,Interger以及其它包裝類。例如:public

final

class

GlassCup

{//此處省略}final類型地優(yōu)點(diǎn)如下。提高性能,JVM與JAVA應(yīng)用均會緩存final限定地變量。final變量在多線程環(huán)境下無須額外開銷即可共享。會對final類型地變量,方法與類進(jìn)行優(yōu)化。2.字符串不可變性String

str

=

“Hello”;System.out.println(str.substring(0,

1));System.out.println(str);以上地代碼會輸出什么呢?str.replace(“H”,

“h”);System.out.println(str);這次輸出是什么呢?輸出結(jié)果如圖

4-9

所示。圖4-9運(yùn)行結(jié)果控制臺仍然輸出“Hello”是什么原因呢?原來,字符串地方法在返回時返回地是另外一個字符串,而其本身并沒有改變,所以無論如何修改,只要不對對象重新賦值,那么該對象就不會改變。也正是這一點(diǎn),使得字符串在使用地時候無須額外地開銷就能實(shí)現(xiàn)共享。4.2

StringBuffer類字符串類String是final限定地類型,在線程編程地時候因?yàn)槠洳蛔冃缘靥攸c(diǎn),使得其在多線程中共享時不會有額外地開銷,這極大地提升了性能,同時也帶來了問題。不變地對象有時候會極大地提升程序地性能,但也可能會耗盡系統(tǒng)資源。如下面地代碼:String

str

=

"abc"

+

"bcs";這段代碼看似簡單,但實(shí)際上程序創(chuàng)建了4.2.1

StringBuffer

地應(yīng)用

StringBuffer

在字符串地操作上克服了

String

拼接會產(chǎn)生多個對象地問題。它可以以一個字符串作為參數(shù)進(jìn)行初始化。其常用初始化方式有以下

3

種。StringBuffer

strBuffer

=

newStringBuffer();

//

無參構(gòu)造函數(shù)初始化StringBuffer

stringBuffer

=

newStringBuffer("123");

//

使用字符串對象初始化StringBuffer

stBuffer

=

new1.字符串拼接插入StringBuffer

主要使用

append()方法進(jìn)行字符串地拼接操作,同時,也可以使用

insert()方法有針對性地進(jìn)行插入。在操作完成之后,可以使用toString()方法返回字符串對象。案例

4-8

StringBuffer

地字符串拼接插入運(yùn)行結(jié)果如圖

4-11

所示。圖4-11運(yùn)行結(jié)果從運(yùn)行結(jié)果可知,StringBuffer地append()方法可以追加任何類型地值,并將之轉(zhuǎn)換成字符串添加到StringBuffer對象地末尾。StringBuffer將boolean類型地變量地值當(dāng)成是字面量追加到末尾,而其它類型則直接當(dāng)成一個字符進(jìn)行追加。StringBuffer還有insert方法可以在指定位置插入傳入地值,insert也會將boolean類型地變量以字面量值插入到指定地索引位置,該索引位置地值依次向后移動。Insert還可以接受一個字符序列作為參數(shù),從指定地字符序列索引位置取出指定長度地字符序列,插入到StringBuffer對象地指定索引位置,該索引位置及之后地字符依次向后移動。在案例中,打印StringBuffer對象地時候并沒有使用

toString()方法,這是因?yàn)橄到y(tǒng)地輸入輸出方法會把傳入地參數(shù)轉(zhuǎn)換成字符串后輸出,這相當(dāng)于對所有地打印目的都添加了一個toString()方法,因此,在此處可以省去toString()方法。2.字符串修改相較于字符串類,StringBuffer

添加了一些新地功能,它不僅可以拼接字符串或者在特定地位置插入字符串,還可以刪除指定索引上地字符,使用起來相當(dāng)方便。案例

4-9

StringBuffer

地常用操作方法運(yùn)行結(jié)果如圖

4-12

所示。圖4-12運(yùn)行結(jié)果從案例4-9可知,StringBuffer中地delete方法能夠很靈活地刪除字符串中地?cái)?shù)據(jù),配合insert()方法可以快速實(shí)現(xiàn)字符串地修改操作。從輸出結(jié)果可以看出,StringBuffer對象地修改是持久地。很有意思地是,其replace方法與String地replace方法有所不同。在String中,replace()方法會替換符合條件地所有字符,其參數(shù)是兩個字符串:一個匹配項(xiàng)與一個匹配后需要將其匹配項(xiàng)替換地字符串。在StringBuffer中,replace()則是三個參數(shù),分別是起始索引位置,結(jié)束索引位置與需要將此索引區(qū)間替換成地字符串項(xiàng)。在需要替換預(yù)定格式地字符串地固定位置序列時,該方法非常方便。在StringBufer地這些輸出中不難看出,StringBuffer對于字符串地操作也是“含頭不含尾”地處理方式。在替換索引位置0至索引位置2地操作里,替換操作只替換了索引位置0與索引位置1。這種處理方式一定要牢記。4.2.2

StringBuilder

StringBuffer地比較StringBuilder 也是官方

API 中設(shè)計(jì)地用來操作字符串地方法類,StringBuilder到底有哪些方法呢?下面我們通過一個案例來學(xué)習(xí)這個類。案例 4-10

StringBuilder 地常用方法運(yùn)行結(jié)果如圖 4-13 所示。圖4-13運(yùn)行結(jié)果StringBuffer與StringBuilder地直接父類都是AbstractStringBuilder。它們唯一地區(qū)別就是,StringBuffer地每個方法上都多了一個synchronized關(guān)鍵字。synchronized關(guān)鍵字相當(dāng)于給跑道設(shè)置了邊界,選手不會出現(xiàn)因?yàn)椴恍⌒呐艿狡渌x手地跑道而導(dǎo)致比賽混亂地情況。StringBuffer是線程安全地,而StringBuilder則不是。在編寫程序地時候如果判定不需要考慮多線程環(huán)境,那么首選StringBuilder,因?yàn)闊o須考慮多線程,也就如同避免了選手會跑錯跑道而需要設(shè)置地柵欄,那么速度自然會更快一些。4.3常用地JavaAPIJava為了方便編程人員地快速開發(fā),提供了大量地通用API,其中最常用到地就是System.out.println(),這個方法是Syste下地一個方法。除了System類以外,還有諸如數(shù)學(xué)計(jì)算方面地Random類,Math類等。4.3.1

System

類System 字面意思是系統(tǒng),顧名思義,這個類是與系統(tǒng)屬性有關(guān)地,可以用來改變當(dāng)前地系統(tǒng)環(huán)境變量來實(shí)現(xiàn)某些功能。因?yàn)檫@些都是靜態(tài)地方法,所以它們可以直接使用類名調(diào)用,省去了初始化該類地步驟。1.系統(tǒng)屬性在第

1

章中配置系統(tǒng)環(huán)境變量地步驟就是在配置

Java

地編譯與運(yùn)行環(huán)境,當(dāng)時配置地是JAVA_HOME

這個系統(tǒng)變量。如果想手動修改,除了可以在系統(tǒng)內(nèi)通過高級系統(tǒng)設(shè)置選項(xiàng)卡去配置,還可以使用

System

類對這些環(huán)境變量進(jìn)行修改,當(dāng)然前提是妳知道這些環(huán)境變量地

KEY

值,JAVA_HOME

就是一個 KEY

值。案例

4-11系統(tǒng)環(huán)境變量運(yùn)行結(jié)果如圖

4-14所示。圖4-14運(yùn)行結(jié)果此處因內(nèi)容較多,僅截取了部分內(nèi)容。具體地輸出會因?yàn)檫\(yùn)行地系統(tǒng)不同而有所差別,有興趣地讀者可以自己運(yùn)行后查看。Java可以通過System類來獲取當(dāng)前系統(tǒng)地環(huán)境變量,如案例4-11中地System.getProperties()方法。同時System類還可以根據(jù)環(huán)境變量地名稱來獲取該值。在需要地時候,也可以通過System來修改甚至添加系統(tǒng)環(huán)境變量地值,同時也能將其刪除。如案例4-11中地DEBUG_HOME這個環(huán)境變量就可以通過System來修改,添加甚至刪除。如果該環(huán)境變量不存在,獲取時會返回null。2.當(dāng)前時間有時候在編寫代碼地時候需要考慮代碼地性能,使用人工計(jì)時地方式不僅不可靠,還會比較煩瑣,為了能夠精確地計(jì)算程序執(zhí)行耗費(fèi)地時間,System

類提供了相應(yīng)地方法以供使用。案例

4-12

系統(tǒng)當(dāng)前時間運(yùn)行結(jié)果如圖

4-15

所示。圖4-15運(yùn)行結(jié)果計(jì)算機(jī)地元年是1970年1月1日0時0分0秒,所以System在獲取時間地時候會用當(dāng)前時間跟元年進(jìn)行比較,這也可以看作是對計(jì)算機(jī)元年地時間偏移量。一般使用currentTimeMillis()就可以滿足需要了,這是當(dāng)前時間對元年地毫秒時間偏移量,是一個long類型地?cái)?shù)值。但當(dāng)時間需要更加精確地時候,我們可以使用納秒來計(jì)算,即nanoTime()。nanoTime同樣是對元年地納秒時間偏移量,它會返回一個long類型地?cái)?shù)值。在簡單地方法性能測試地時候,一般會選擇毫秒作為單位進(jìn)行方法調(diào)用耗時統(tǒng)計(jì),System類獲取當(dāng)前時間地方法大大簡化了這種簡單測試地難度。在測試時可以選擇測試內(nèi)容塊來進(jìn)行耗時統(tǒng)計(jì),可以在開發(fā)階段就去發(fā)現(xiàn)那些性能較差地代碼塊。3.?dāng)?shù)組拷貝System

類還提供了一個常用地方法,即數(shù)組內(nèi)容拷貝,該方法可以將指定地?cái)?shù)組內(nèi)容拷貝到目的數(shù)組中去。案例

4-13

數(shù)組拷貝運(yùn)行結(jié)果如圖

4-16

所示。圖4-16運(yùn)行結(jié)果arraycopy()方法接口地5個參數(shù)分別是:源數(shù)組,復(fù)制起始位置,目的數(shù)組,存放起始位置,復(fù)制長度。在案例4-13中,第二次復(fù)制操作拋出了異常,原因是數(shù)組下標(biāo)越界。這說明復(fù)制不是隨心所欲地,需要保證目的數(shù)組從開始位置

起有足夠地容量存放將要復(fù)制地?cái)?shù)據(jù)。同時,也要保證源數(shù)

組中從復(fù)制起始位置起有足夠長度地?cái)?shù)據(jù)可供復(fù)制。如果源數(shù)組與目的數(shù)據(jù)其中之一沒有足夠地?cái)?shù)據(jù)或容量,都會拋出數(shù)組下標(biāo)越界地錯誤。System類還有g(shù)c()方法來調(diào)用垃圾回收器,但是這個方法并不是調(diào)用后立即執(zhí)行地,有興趣地讀者可以查看官方地API去學(xué)習(xí)。同時,該類還有exit()方法來終止當(dāng)前地

Java虛擬機(jī),參數(shù)是整型類型0,則表示系統(tǒng)正常退出,想要進(jìn)一步了解地讀者可以查閱有關(guān)地文檔。4.3.2

Random 類與

Math

類除了

System

類,Java

還提供了

Random類與

Math

類來處理相應(yīng)地操作。Random

類顧名思義是隨機(jī)數(shù)生成類,該類可以隨機(jī)生成一些數(shù)字,我們稱之為隨機(jī)數(shù),而

Math

類則是處理一些簡單地?cái)?shù)學(xué)運(yùn)算地函數(shù),例如正弦,余弦等。1.Random

隨機(jī)數(shù)案例 4-14

Random 隨機(jī)生成隨機(jī)數(shù)運(yùn)行結(jié)果如圖 4-17,圖 4-18 所示。圖4-17運(yùn)行結(jié)果1圖4-18運(yùn)行結(jié)果2Random類是隨機(jī)數(shù)類,它可以隨機(jī)生成一個整型,浮點(diǎn)類型地隨機(jī)數(shù),甚至可以產(chǎn)生一個隨機(jī)地boolean值。Random地nextInt()方法用于生成一個在int有效值以內(nèi)地?cái)?shù)值,nextInt(int

range)則生成一個在0~range范圍以內(nèi)地整數(shù)。double類型與float類型隨機(jī)數(shù)生成方式與int類型一致。因?yàn)閎oolean類型只有兩個值,所以nextBoolean()方法只會生成false或者true。在案例4-14中有個特殊地地方,就是在代碼地后半部分重新初始化了rm對象,這次初始化地時候使用了有參構(gòu)造函數(shù)地方式。在Random類中,這個參數(shù)成為隨機(jī)種子,一旦使用了隨機(jī)種子,那么該對象生成地隨機(jī)數(shù)就會固定不變,無論使用多少次,相同地方法只會返回相同地值。在運(yùn)行結(jié)果圖中經(jīng)對比即可發(fā)現(xiàn)。2.Math

數(shù)學(xué)類數(shù)學(xué)類是為了簡便一些常用地?cái)?shù)學(xué)計(jì)算地類,例如平方根,正弦,余弦等,Math

類還提供了角度與弧度轉(zhuǎn)換,求取兩數(shù)之間地較大數(shù)或較小數(shù)等。案例

4-15

數(shù)學(xué)類運(yùn)行結(jié)果如圖

4-19

所示。圖4-19運(yùn)行結(jié)果4.4動手任務(wù):猜數(shù)字游戲任務(wù)介紹1.任務(wù)描述在春節(jié)期間,移動推出了一元搶流量包活動。移動用戶可以使用一元錢購買流量包,購買后可以多人共享,每個移動號碼可以猜一次,如果猜中了,則所有人都會有流量獎勵,購買者獲得70%地總流量值,其余地流量由參加猜值地用戶分得。參考移動地活動,我們可以將其

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論