Java程序設(shè)計基礎(chǔ) 課件 第10章 Java常用類介紹_第1頁
Java程序設(shè)計基礎(chǔ) 課件 第10章 Java常用類介紹_第2頁
Java程序設(shè)計基礎(chǔ) 課件 第10章 Java常用類介紹_第3頁
Java程序設(shè)計基礎(chǔ) 課件 第10章 Java常用類介紹_第4頁
Java程序設(shè)計基礎(chǔ) 課件 第10章 Java常用類介紹_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第十章Java常用類介紹10.1基本數(shù)據(jù)包裝類10.2System類10.3Random類10.4日期時間類本章小結(jié)

10.1基本數(shù)據(jù)包裝類

1.包裝類

Java語言源于C語言,因此Java中也保存了類似C語言的基本數(shù)據(jù)類型,共有八種,即byte、short、int、long、char、boolean、float、double。正是這些基本數(shù)據(jù)類型,使得Java不是一個單純的面向?qū)ο笳Z言,因為這些基本數(shù)據(jù)類型定義的是基本數(shù)據(jù)類型變量,而并不是對象。

如果要讓這些基本數(shù)據(jù)也能像對象一樣進行方法調(diào)用等面向?qū)ο蟮木幊谭绞剑托枰獙⑦@些基本數(shù)據(jù)類型轉(zhuǎn)換為對應(yīng)的類。Java定義了包裝類(WrapperClasses)與這八種基本數(shù)據(jù)類型對應(yīng),它們都位于java.lang包中。這些包裝類中可以保存對應(yīng)的基本數(shù)據(jù)類型的數(shù)據(jù),并可以完成相應(yīng)的操作,如表10-1所示。

2.裝箱與拆箱

(1)裝箱:將基本類型數(shù)據(jù)轉(zhuǎn)換為包裝器類型對象。

(2)拆箱:將包裝器類型對象轉(zhuǎn)換為基本類型數(shù)據(jù)。

3.包裝類的應(yīng)用

Java設(shè)計的這些包裝類中有很多實用的方法,以方便對這些基本數(shù)據(jù)進行各種處理。下面以Integer為例進行介紹,其它包裝類請讀者自行查詢幫助文檔使用。

程序結(jié)果:

程序分析:

(1)如果沒有Integer包裝類,解決這個問題就要像在C語言中一樣使用面向過程的分支、循環(huán)等語句來完成,需要判斷輸入的整數(shù)是正數(shù)還是負數(shù),然后遍歷字符串,取出每個字符轉(zhuǎn)換為整數(shù),最后按一定算法拼接成為對應(yīng)的整數(shù)。

(2)有了Integer這個類,只需要調(diào)用Integer類的靜態(tài)方法parseInt即可完成,而且對于正數(shù)、負數(shù)以及非整數(shù)情況都能處理,對于不是整數(shù)情況的將拋出異常。

(3)反之,將一個整數(shù)轉(zhuǎn)變?yōu)閷?yīng)的整數(shù)字符串形式,同樣也可以使用Integer的toString方法來完成:

intm=134;

Strings=Integer.toString(m);

(4)類似的其它包裝類也有這樣的操作,如parseByte(Stringstr)、parseShort(Stringstr)、parseLong(Stringstr)、parseFloat(Stringstr)、parseDouble(Stringstr)等,將字符串形式的數(shù)據(jù)轉(zhuǎn)換為對應(yīng)的基本類型數(shù)據(jù)即可。

10.2System類

1.System的屬性(1)?publicstaticfinalInputStreamin:標準輸入設(shè)備(鍵盤)。(2)?publicstaticfinalInputStreamout:標準輸出設(shè)備(顯示器)。(3)?publicstaticfinalInputStreamerr:標準錯誤輸出流。

2.System的常用方法

(1)?publicstaticvoidexit(intstatus):系統(tǒng)退出,如果status為0就表示退出。

(2)?publicstaticvoidgc():運行垃圾收集機制,調(diào)用Runtime類中的gc方法。

(3)?publicstaticlongcurrentTimeMillis():返回以毫秒為單位的當前時間。

(4)?publicstaticlongnanoTime():返回最準確的可用系統(tǒng)計時器的當前值。

(5)?publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdesPos,intlength):數(shù)組拷貝操作。

(6)?publicstaticPropertiesgetProperties():取得當前系統(tǒng)的全部屬性。

(7)?publicstaticStringgetProperty(Stringkey):根據(jù)鍵值取得屬性的具體內(nèi)容。

3.System類的使用

程序結(jié)果

程序結(jié)果:

10.3Random類1.Random構(gòu)造函數(shù)JavaAPI中提供了兩個構(gòu)造方法來創(chuàng)建一個Random對象:(1)?Random():無參構(gòu)造函數(shù)。(2)?Random(longseed):使用long類型參數(shù)作為種子的構(gòu)造函數(shù)。無參構(gòu)造函數(shù)底層也是調(diào)用了有參構(gòu)造函數(shù),將System.nanoTime()作為參數(shù)傳遞,即如果使用無參構(gòu)造,默認的seed值為System.nanoTime(),使用種子產(chǎn)生的偽隨機數(shù)隨機性更好。

2.Random的主要方法

(1)?boolean

nextBoolean(): 返回下一個偽隨機數(shù),它是取自此隨機數(shù)生成器序列的均勻分布的boolean值。

(2)?void

nextBytes(byte[]bytes):生成隨機字節(jié)并將其置于用戶提供的byte數(shù)組中。

(3)?double

nextDouble():返回下一個偽隨機數(shù),它是取自此隨機數(shù)生成器序列的、在0.0和1.0之間均勻分布的double值。

(4)?double

nextGaussian():返回下一個偽隨機數(shù),它是取自此隨機數(shù)生成器序列的、呈高斯正態(tài)分布的double值,其平均值是0.0,標準差是1.0。

(5)?int

nextInt():返回下一個偽隨機數(shù),它是此隨機數(shù)生成器的序列中均勻分布的int值。

(6)?int

nextInt(intn):返回一個偽隨機數(shù),它是取自此隨機數(shù)生成器序列的[0,n-1]之間均勻分布的int值。

(7)?void

setSeed(longseed):使用單個long種子設(shè)置此隨機數(shù)生成器的種子。

3.Random的使用

一般在程序中產(chǎn)生的隨機數(shù)主要有兩種,一種是一個小數(shù)區(qū)段的偽隨機數(shù);另外一種是一個整數(shù)區(qū)段的偽隨機數(shù)。

下面首先創(chuàng)建Random的對象ra(Randomra=newRandom();),然后通過ra調(diào)用相應(yīng)的對象方法來創(chuàng)建偽隨機數(shù),例如:

(1)生成[0,10)區(qū)間的整數(shù):

intn2=ra.nextInt(10); (左閉右開)

(2)生成[n,m]區(qū)間的整數(shù):

ra.nextInt(n-m+1)+m

(3)生成[10,50]區(qū)間的整數(shù):

ra.nextInt(41)+10

(4)生成-231到231-1之間的整數(shù):

intn=ra.nextInt();

(5)生成[0,1.0)區(qū)間的小數(shù):

doubled1=ra.nextDouble();

(6)生成[0,5.0)區(qū)間的小數(shù):

oubled2=ra.nextDouble()*5;

(7)生成[1,2.5)區(qū)間的小數(shù):

doubled3=ra.nextDouble()*1.5+1;

程序結(jié)果:

10.4日?期?時?間?類

Java對于日期和時間進行處理的類主要有:古老的Date類、處理年月日的日歷類Calendar和格式化日期對象SimpleDateFormat類。

10.4.1Date類

Date(java.util.Date)類從jdk1.0就開始被設(shè)計出來,Java早期的版本中有關(guān)日期和時間的操作幾乎都是由Date類完成的,有很多對于時間日期的獲取/設(shè)置方法,現(xiàn)在這些方法大多不再使用,被Calendar中的方法所替代了。

Date中封裝了一個long類型的成員變量“privatetransientlongfastTime;”,這個變量是整個時間日期操作的對象。我們使用該變量代表時間和日期,整數(shù)值代表的是距離格林尼治標準時間(1970年1月1日0時0分0秒)所經(jīng)過的毫秒數(shù),也就是說fastTime值為1000的時候代表時間為1970年1月1日0時0分1秒。

10.4.2Calendar類

Calendar(java.util.Calendar)是處理日期時間的核心類。該類中封裝了很多靜態(tài)常量字段(field),這些日歷字段分別用來表示日期時間屬性,例如YEAR表示年份,MONTH表示月份,WEEK代表星期幾,HOUR表示小時等,并且具有相應(yīng)的獲取/設(shè)置這些屬性的方法。(注:月份和星期幾都是從0開始計數(shù)的,0代表1月、星期一。)

Calendar是抽象類,所以不能使用new方式來創(chuàng)建Calendar的對象,而是要使用類方法getInstance()來獲取該類的對象,如“CalendarrightNow=Calendar.getInstance();”,對象rightNow中的日歷字段由執(zhí)行該語句時的當前日期和時間進行初始化。日期時間的操作方法主要有兩類,一是獲取日期時間的日歷字段值,如年月日時分秒等;二是設(shè)置各個日歷字段的值。

程序結(jié)果:

程序結(jié)果:

10.4.3SimpleDateFormat類

SimpleDateFormat(java.text.SimpleDateFormat)類使用與語言環(huán)境有關(guān)的方式來格式化和解析日期對象:

(1)格式化:將日期對象按照某種格式轉(zhuǎn)換為對應(yīng)的字符串文本。

(2)解析:將一個規(guī)范的日期形式字符串轉(zhuǎn)換為對應(yīng)的日期類型對象。

簡單來說,就是實現(xiàn)日期時間對象和字符串之間的相互轉(zhuǎn)換,并且該類還允許自定義轉(zhuǎn)換的字符串格式模板。

SimpleDateFormat類繼承結(jié)構(gòu)圖如圖10-1所示。圖10-1SimpleDateFormat類繼承結(jié)構(gòu)圖

SimpleDateFormat類的父類是DateFormat(日期格式化類),該類主要用于實現(xiàn)Date對象和字符串之間的相互轉(zhuǎn)換,主要使用下列兩個方法:

(1)?publicfinalStringformat(Datedate):將Date類型轉(zhuǎn)換為字符串對象。

(2)?publicDateparse(Stringsource):將字符串對象轉(zhuǎn)換為Date類型對象。

DateFormat類對于Date和String的轉(zhuǎn)換是使用固定的字符串模板形式,字符串模板形式如“年-月-日時:分:秒”。下面通過示例程序進行說明。

程序結(jié)果:

程序結(jié)果:

本章小結(jié)1.Java的JDK中有很多實用類,要學會如何查詢幫助文檔使用它們,并在使用的過程中不斷積累這些類,讓它們成為編程的強大工具。2.基本類型包裝類是專門對基本數(shù)據(jù)類型進行包裝,使這些基本數(shù)據(jù)類型的數(shù)據(jù)也能夠按照面向?qū)ο缶幊痰姆绞絹磉M行操作。3.Java的八種基本數(shù)據(jù)類型對應(yīng)的包裝類如下:byte:Byte,short:Short,int:Integer,long:Long,char:Character,boolean:Boolean,float:Float,double:Double。

4.自動裝箱語句為“Integeri=10;”,自動拆箱語句為“intn=i;”。

5.System類具有的方法能夠獲取當前系統(tǒng)的各種屬性值、當前系統(tǒng)時間,并能結(jié)束程序、對數(shù)組進行拷貝等等。

6.Java對于日期時間的操作主要使用三個類,即Date、Calendar、SimpleDateForma

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論