版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1,第5章Java API,浙江工業(yè)大學(xué)計算機(jī)科學(xué)與技術(shù),浙江工業(yè)大學(xué)圖形圖像研究所,高,飛,2,1、 以下關(guān)于abstract的說法,正確的是( )。 A、abstract只能修飾類 B、abstract只能修飾方法 C、abstract類中必須有abstract方法 D、abstarct方法所在的類必須用abstract修飾,練習(xí)思考題,3,第5章Java API,理解Java API的概念 了解Object類 熟悉String類和StringBuffer類 基本數(shù)據(jù)類型的對象類 Properties類 System類與Runtime類 Date與Calendar,DateFormat類
2、Math與Random類,本章的目的:,回顧關(guān)鍵詞:繼承、超類和子類、抽象類和接口、內(nèi)部類、 Class類,4,5.1 Java API的概念,Java的類庫是Java語言提供的已經(jīng)實現(xiàn)的標(biāo)準(zhǔn)類的集合,是Java編程的API(Application Program Interface),它可以幫助開發(fā)者方便、快捷地開發(fā)Java程序。這些類根據(jù)實現(xiàn)的功能不同,可以劃分為不同的集合,每個集合組成一個包,稱為類庫。Java類庫中大部分都是由Sun公司提供的,這些類庫稱為基礎(chǔ)類庫。 Java語言中提供了大量的類庫供程序開發(fā)者來使用,了解類庫的結(jié)構(gòu)可以幫助開發(fā)者節(jié)省大量的編程時間,而且能夠使編寫的程序更
3、簡單更實用。Java中豐富的類庫資源也是Java語言的一大特色,是Java程序設(shè)計的基礎(chǔ)。,5,Java常用包的簡單介紹如下:,1)java.lang包:主要含有與語言相關(guān)的類。java.lang包由解釋程序自動加載,不需要用import顯示引入。Java語言包(java.lang)定義了Java中的大多數(shù)基本類。該包中包含了Object類,Object類是整個類層次結(jié)構(gòu)的根結(jié)點,同時還定義了基本數(shù)據(jù)類型的類,如:String、Boolean、Byter、Short等。這些類支持?jǐn)?shù)字類型的轉(zhuǎn)換和字符串的操作,在前面的章節(jié)中已經(jīng)涉及了部分內(nèi)容,本章主要介紹該包中的Math類和字符串類。 2)ja
4、va.io包:主要含有與輸入/輸出相關(guān)的類,這些類提供了對不同的輸入和輸出設(shè)備讀寫數(shù)據(jù)的支持,這些輸入和輸出設(shè)備包括鍵盤、顯示器、打印機(jī)、磁盤文件等。,6,Java常用包的簡單介紹如下:,3)java.util包:包括許多具有特定功能的類,有日期、向量、哈希表、堆棧等,其中Date類支持與時間有關(guān)的操作。 4)javax.swing包和java.awt包:提供了創(chuàng)建圖形用戶界面元素的類。通過這些元素,編程者可以控制所寫的Applet或Application的外觀界面。包中包含了窗口、對話框、菜單等類。,7,Java常用包的簡單介紹如下:,5)包:含有與網(wǎng)絡(luò)操作相關(guān)的類,如TCP Sockets
5、、URL等工具。 6)java.applet包:含有控制HTML文檔格式、應(yīng)用程序中的聲音等資源的類,其中Applet類是用來創(chuàng)建包含于HTML的Applet必不可少的類。 7)java.beans包:定義了應(yīng)用程序編程接口(API),Java Beans是Java應(yīng)用程序環(huán)境的中性平臺組件結(jié)構(gòu)。,8,5.2 Object類,Object類是Java程序中所有類的直接或間接父類,處在類的最高層次。一個類在聲明時若不包含關(guān)鍵字extends,系統(tǒng)就會認(rèn)為該類直接繼承Object類。Object類包含了所有Java類的公共屬性和方法,這些屬性和方法在任何類中均可以直接使用。 Object類有一個默
6、認(rèn)構(gòu)造方法: public Object() /方法體為空 在構(gòu)造子類實例時,都會先調(diào)用這個默認(rèn)構(gòu)造方法。,9,Object類中主要的方法如下表所示。,10,Object類的equals方法比較兩個對象是否相等,實現(xiàn)對象上差別可能性最大的相等關(guān)系;對于任何非空引用值 x 和 y,當(dāng)且僅當(dāng) x 和 y 引用同一個對象時,此方法才返回 true。 下面主要介紹equals方法和getClass方法的使用。,11,1equals方法的使用,class ep5_1_a int x = 1; class ep5_1 public static void main(String args) ep5_1_a
7、 One = new ep5_1_a(); ep5_1_a Two = new ep5_1_a(); String a1, a2, a3 = abc, a4 = abc; a1 = new String(abc); a2 = new String(abc); System.out.println(a1.equals(a2)是 + (a1.equals(a2); System.out.println(a1=a2是 + (a1 = a2); System.out.println(a1.equals(a3)是 + (a1.equals(a3); System.out.println(a1=a3是 +
8、 (a1 = a3); System.out.println(a3.equals(a4)是 + (a3.equals(a4); System.out.println(a3=a4是 + (a3 = a4); System.out.println(One.equals(Two)是 + (One.equals(Two); System.out.println(One=Two是 + (One = Two); One = Two; System.out.println(賦值后,One.equals(Two)是 + (One.equals(Two); System.out.println(賦值后,One=
9、Two是 + (One = Two); ,12,可以看出,對于字符串變量來說,使用“=”運(yùn)算符和“equals()”方法來比較,其比較方式是不同的?!?”運(yùn)算符用于比較兩個變量本身的值,即兩個對象在內(nèi)存中的首地址;“equals()”方法比較的是兩個字符串中所包含的內(nèi)容是否相同。 對于非字符串類型的變量來說,“=”運(yùn)算符和“equals()”方法都用來比較其所指對象在堆內(nèi)存中的首地址,即比較兩個類類型的變量是否指向同一個對象。對于a3和a4這兩個由字符串常量生成的變量,其所存放的內(nèi)存地址是相同的。,13,2getClass方法的使用,【例5_2】getClass方法返回調(diào)用該方法所屬的類。 c
10、lass ep5_2_a protected String name; public ep5_2_a(String a) name = a; class ep5_2 public static void main(String args) ep5_2_a One = new ep5_2_a(abc); Class b = One.getClass(); / 用變量One調(diào)用getClass()方法 System.out.println(對象One所屬的類為: + b); ,14,5.3 String類和StringBuffer類,String類和StringBuffer類主要用來處理字符串,這
11、兩個類提供了很多字符串的使用處理方法。String類是不可變類,一個String對象所包含的字符串內(nèi)容永遠(yuǎn)不會被修改(可以重新賦值);而StringBuffer類是可變類,一個StringBuffer對象所包含的字符串內(nèi)容可以被添加或修改。 String 常量字符串,一旦賦值或?qū)嵗缶筒豢筛摹?StringBuffer 可變字符串構(gòu)造器,如頻繁的修改字符串值,可以使用StringBuffer。,15,5.3.1 String類,java. lang包中的String類代表字符串。Java 程序中的所有字符串字面值(如 abc )都作為此類的實例來實現(xiàn)。字符串是常量,它們的值在創(chuàng)建之后不能改
12、變。因為String對象是不可變的,所以可以共享它們。例如: String str = abc; 等效于: char data = a, b, c; String str = new String(data);,16,1String類常用構(gòu)造方法:,(1)public String():初始化一個新創(chuàng)建的 String 對象,它表示一個空字符序列。 (2)public String(String original):初始化一個新創(chuàng)建的String對象,表示一個與該參數(shù)original相同的字符序列;換句話說,新創(chuàng)建的字符串是該參數(shù)字符串的一個副本。由于String是不可變的,不必使用該構(gòu)造方法
13、,除非需要original 的顯式副本。,17,(3)public String(char value):分配一個新的 String,它表示當(dāng)前字符數(shù)組參數(shù)value中包含的字符序列。該字符數(shù)組的內(nèi)容已被復(fù)制;后續(xù)對字符數(shù)組的修改不會影響新創(chuàng)建的字符串。 (4)public String(char value, int offset, int count):分配一個新的 String,它包含來自該字符數(shù)組參數(shù)的一個子數(shù)組的字符。offset 參數(shù)是子數(shù)組第一個字符的索引,count 參數(shù)指定子數(shù)組的長度。該子數(shù)組的內(nèi)容已被復(fù)制;后續(xù)對字符數(shù)組的修改不會影響新創(chuàng)建的字符串。,18,(5)publ
14、ic String(byte bytes):初始化一個新創(chuàng)建的 String 對象,方法是使用平臺的默認(rèn)字符集解碼字節(jié)的指定數(shù)組,參數(shù)bytes 表示要解碼為字符的字節(jié)。 (6)public String(byte bytes, String charsetName):構(gòu)造一個新的 String,方法是使用指定的字符集解碼指定的字節(jié)數(shù)組。,19,2String類常用方法:,(1)public int length():返回此字符串的長度。 (2)public char charAt(int index):返回指定索引處的 char 值。索引范圍為從 0 到 length() - 1。序列的第一
15、個 char 值在索引 0 處,第二個在索引 1 處,依此類推,這類似于數(shù)組索引。 (3)public void getChars(int srcBegin,int srcEnd,char dst,int dstBegin):將字符從此字符串復(fù)制到目標(biāo)字符數(shù)組。 (4)public boolean equals(Object anObject):比較此字符串與指定的對象。當(dāng)且僅當(dāng)該參數(shù)不為 null,并且是表示與此對象相同的字符序列的 String 對象時,結(jié)果才為 true。,20,5.3.2 StringBuffer類,java.lang包中的StringBuffer類表示可變字符序列。一
16、個類似于 String 的字符串緩沖區(qū),但不能修改。雖然在任意時間點上它都包含某種特定的字符序列,但通過某些方法調(diào)用可以改變該序列的長度和內(nèi)容。 StringBuffer 上的主要操作是 append 和 insert 方法,可重載這些方法,以接受任意類型的數(shù)據(jù)。每個方法都能有效地將給定的數(shù)據(jù)轉(zhuǎn)換成字符串,然后將該字符串的字符追加或插入到字符串緩沖區(qū)中。append 方法始終將這些字符添加到緩沖區(qū)的末端;而 insert 方法則在指定的點添加字符。,21,1StringBuffer類的常用構(gòu)造方法,(1)StringBuffer():構(gòu)造一個其中不帶字符的字符串緩沖區(qū),其初始容量為16個字符。
17、 (2)StringBuffer(int capacity):構(gòu)造一個不帶字符,具有指定容量的字符串緩沖區(qū)。 (3)StringBuffer(String str):構(gòu)造一個字符串緩沖區(qū),并將其內(nèi)容初始化為指定的字符串內(nèi)容。,22,2StringBuffer類的常用方法:,(1)toString():返回此序列中數(shù)據(jù)的字符串表示形式。 (2)append(boolean b):將 boolean 參數(shù)的字符串表示形式追加到序列。 (3)length():返回長度(字符數(shù))。 (4)charAt(int index):返回此序列中指定索引處的 char 值。 (5)setCharAt(int i
18、ndex, char ch):將給定索引處的字符設(shè)置為 ch。,23,(6)getChars(int srcBegin, int srcEnd, char dst, int dstBegin):將字符從此序列復(fù)制到目標(biāo)字符數(shù)組 dst。 (7)substring(int start):返回一個新的 String,它包含此字符序列當(dāng)前所包含的字符子序列。 (8)insert(int offset, String str):將字符串插入此字符序列中。,24,【例5-6】一個使用StringBuffer類的例子。,class ep5_6 public static void main(String
19、args) StringBuffer str = new StringBuffer(62791720); str.insert(0, 010-); str.setCharAt(7, 8); str.setCharAt(str.length() - 1, 7); System.out.println(str); str.append(-446); System.out.println(str); str.reverse(); System.out.println(str); ,G:Javajava ep5_6010-62781727-446 644-72718726-
20、010,25,5.3.3 String類和stringBuffer類下字符串的區(qū)別,String : 常量字符串,一旦賦值或?qū)嵗缶筒豢筛? 字符串緩沖區(qū)支持可變的字符串。 如果對字符串中的內(nèi)容經(jīng)常進(jìn)行操作,特別是內(nèi)容要修改時,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。,26,5.4基本數(shù)據(jù)類型的對象類,Java的基本數(shù)據(jù)包括byte、int、short、long、float、double、char,Java同時也提供了基本數(shù)據(jù)類型相關(guān)的類,Java語言用包裝類來把基本類型數(shù)據(jù)轉(zhuǎn)換為對象。每個Java基本類型在j
21、ava.lang包中都有一個相應(yīng)的包裝類,參見表5-2。,27,表5.2 基本類型與包裝類的對應(yīng),28,5.4.1 Double類和Float類,Double類和Float類實現(xiàn)了對double和float基本型數(shù)據(jù)的類包裝。 Double 類在對象中包裝了一個基本類型 double 的值。每個 Double 類型的對象都包含一個 double 類型的字段。 Double類的構(gòu)造方法: Double(double num) 構(gòu)造一個新分配的 Double 對象,它表示基本的 double 參數(shù)。此外,該類還提供了多個方法,可以將 double 轉(zhuǎn)換為 String,將 String 轉(zhuǎn)換為 d
22、ouble,還提供了其他一些處理 double 時有用的常量和方法。,29,Float 類在對象中包裝了一個 float 基本類型的值。Float 類型的對象包含一個 float 類型的字段。 Float類的構(gòu)造方法: Float(double value) 構(gòu)造一個新分配的 Float 對象,它表示轉(zhuǎn)換為 float 類型的參數(shù)。此外,此類提供了幾種方法,可在 float 類型和 String 類型之間互相轉(zhuǎn)換,并且還提供了處理 float 類型時非常有用的其他一些常量和方法。,30,5.4.2 Byte、Integer、Short、Long類,Byte 類將基本類型 byte 的值包裝在一
23、個對象中。 Byte 類的構(gòu)造方法: Byte(byte value) 構(gòu)造一個新分配的 Byte 對象,以表示指定的 byte 值。一個 Byte 類型的對象只包含一個類型為 byte 的字段。 此外,該類還為 byte 和 String 的相互轉(zhuǎn)換提供了幾種方法,并提供了處理 byte 時非常有用的其他一些常量和方法。,31,Integer 類在對象中包裝了一個基本類型 int 的值。Integer 類型的對象包含一個 int 類型的字段。 Integer類的構(gòu)造方法: Integer(int value) 構(gòu)造一個新分配的 Integer 對象,它表示指定的 int 值。此外,該類提供了
24、多個方法,能在 int 類型和 String 類型之間互相轉(zhuǎn)換,還提供了處理 int 類型時非常有用的其他一些常量和方法。,32,Short 類在對象中包裝基本類型 short 的值。一個 Short 類型的對象只包含一個 short 類型的字段。 Short類的構(gòu)造方法: Short(short value) 構(gòu)造一個新分配的 Short 對象,用來表示指定的 short 值。另外,該類提供了多個方法,可以將 short 轉(zhuǎn)換為 String,將 String 轉(zhuǎn)換為 short,同時還提供了其他一些處理 short 時有用的常量和方法。,33,Long 類在對象中封裝了基本類型 long
25、的值。每個 Long 類型的對象都包含一個 long 類型的字段。 Long類的構(gòu)造方法: Long(long value) 構(gòu)造新分配的 Long 對象,表示指定的 long 參數(shù)。此外,該類提供了多個方法,可以將 long 轉(zhuǎn)換為 String,將 String 轉(zhuǎn)換為 long,除此之外,還提供了其他一些處理 long 時有用的常量和方法。,34,5.4.3 Character類,Character 類在對象中包裝一個基本類型 char 的值。Character 類型的對象包含類型為 char 的單個字段。 Character 類的構(gòu)造方法: Character(char value)
26、構(gòu)造一個新分配的 Character 對象,用以表示指定的 char 值。Character類還提供了幾種方法,這些方法可以直接通過類名調(diào)用,用來確定字符的類別(小寫字母,數(shù)字,等等),并將字符從大寫轉(zhuǎn)換成小寫,反之亦然。,35,【例5-7】一個字符數(shù)組大小寫轉(zhuǎn)換的例子。,public class ep5_7 public static void main(String args) char a = a, b, c, D, E, F ; for (int i = 0; i a.length; i+) if (Character.isLowerCase(ai) ai = Character.to
27、UpperCase(ai); else if (Character.isUpperCase(ai) ai = Character.toLowerCase(ai); for (int i = 0; i a.length; i+) System.out.print( + ai); ,36,5.5 Hashtable與Properties類,Java.util包中的Hashtable類實現(xiàn)一個哈希表,該哈希表將鍵映射到相應(yīng)的值。任何非 null 對象都可以用作鍵或值。為了成功地在哈希表中存儲和檢索對象,用作鍵的對象必須實現(xiàn) hashCode 方法和 equals 方法。 Hashtable和Hash
28、Map對象可以讓你把一個key和一個value結(jié)合起來,并用put() 方法把這對key/value輸入到表中。然后你可以通過調(diào)用get()方法,把key作為參數(shù)來得到這個value(值)。只要滿足兩個基本的要求,key和value可以是任何對象。,37,為了將一個特定類的對象用做一個key,這個類必須提供兩個方法,equals() 和 hashCode()。這兩個方法在java.lang.Object中,所以所有的類都可以繼承這兩個方法; HashCode()方法通過運(yùn)用對象的內(nèi)容執(zhí)行一個哈希函數(shù)來生成一個int值。Hashtable和HashMap用這個值來算出一對key/value位于哪
29、個bucket(哈希元)(或列表)中。,38,5.5.2 Properties 類,Java.util.Properties類是設(shè)計用于String keys和values。 Java.util 包中的Properties 類表示了一個持久的屬性集,該類繼承自Hashtable,Properties可保存在流中或從流中加載,屬性列表中每個鍵及其對應(yīng)值都是一個字符串。 一個屬性列表可包含另一個屬性列表作為它的“默認(rèn)值”;如果未能在原有的屬性列表中搜索到屬性鍵,則搜索第二個屬性列表。,39,因為 Properties 繼承于 Hashtable,所以可對 Properties 對象應(yīng)用 put 和
30、 putAll 方法。但強(qiáng)烈反對使用這兩個方法,因為它們允許調(diào)用方插入其鍵或值不是 Strings 的項。相反,應(yīng)該使用 setProperty 方法。如果在“有危險”的 Properties 對象(即包含非 String 的鍵或值)上調(diào)用 store 或 save 方法,則該調(diào)用將失敗。 Properties 類的構(gòu)造方法: Properties() 創(chuàng)建一個無默認(rèn)值的空屬性列表。,40,Properties 類提供了幾個主要的方法:,(1)getProperty ( String key),用指定的鍵在此屬性列表中搜索屬性。也就是通過參數(shù)key,得到key所對應(yīng)的value。 (2)loa
31、d ( InputStream inStream),從輸入流中讀取屬性列表(鍵和元素對)。通過對指定的文件(比如說上面的 perties 文件)進(jìn)行裝載來獲取該文件中的所有鍵 - 值對。以供 getProperty ( String key) 來搜索。,41,(3)setProperty ( String key, String value) ,調(diào)用 Hashtable 的方法 put 。他通過調(diào)用基類的put方法來設(shè)置鍵-值對。 (4)store ( OutputStream out, String comments),以適合使用 load 方法加載到 Properties
32、表中的格式,將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流。與 load 方法相反,該方法將鍵 - 值對寫入到指定的文件中去。 (5)clear () ,清除所有裝載的 鍵 - 值對。該方法在基類中提供。,42,5.5.3利用Properties 類讀取配置文件信息,各種語言都有自己所支持的配置文件類型 ,在Java中,Java 支持的是.properties文件的讀寫。JDK內(nèi)置的java.util.Properties類提供操作.properties文件的便利。,43,【例5_9】一個ep5_9.properties 文件的形式。,# 以下為數(shù)據(jù)庫信息 dbUserNa
33、me = root dbPassword = root # 以下為服務(wù)器信息 ip = host = localhost 配置文件名為ep5_9.properties文件。其中#開始的一行為注釋信息;在等號“ = ”左邊的我們稱之為key,等號“ = ”右邊的我們稱之為 value。其實就是我們常說的鍵-值對。 Key就是程序中的變量,而value是根據(jù)實際情況配置的值。,44,2代碼實例,【例5_10】一個使用ep5_9.properties文件的示例。,45,程序的運(yùn)行結(jié)果如下所示: 查看ep5_9.properties配置文件,會發(fā)現(xiàn)文件已經(jīng)被重新覆蓋,只有兩個鍵
34、-值對: max=1000 min=10 通過上面的例子不難看出,在Java中操作配置文件是非常簡單的。在一個需要用到大量配置信息的模塊或系統(tǒng)里,有必要封裝一個專門的類來使用配置文件。,46,5.6 System類與Runtime類,Java不支持全局函數(shù)和全局變量,Java設(shè)計者將一些與系統(tǒng)相關(guān)的重要函數(shù)和變量收集到了一個System類中,System類中的所有成員都是靜態(tài)的,當(dāng)要引用這些變量和方法的時候,直接使用System類名做前綴就可以了。例如以前學(xué)習(xí)的標(biāo)準(zhǔn)輸入和輸出。,47,5.6.1 System類,System類中的幾個重要的方法: (1)exit(x)方法: 終止當(dāng)前正在運(yùn)行的
35、Java虛擬機(jī)。參數(shù)用作狀態(tài)碼;根據(jù)慣例,非0的狀態(tài)碼表示異常終止。事實上要退出Java程序,可以使用destory()退出一個獨立運(yùn)行的過程。 (2)currentTimeMillis方法: System.currentTimeMillis()產(chǎn)生一個當(dāng)前的毫秒,這個毫秒就是自1970年1月1日0時起的毫秒數(shù)。,48,【例5_11】返回自程序開始運(yùn)行起至當(dāng)前時間的以毫秒為單位的時間值。這是一個long型的大數(shù)值,可以用它來檢測運(yùn)行一段程序時所花費(fèi)的時間。,public class ep5_11 public static void main(String args) long timeTes
36、tStart = System.currentTimeMillis();/ 記錄開始的時間值 System.out.println(歡迎您!); long timeTestEnd = System.currentTimeMillis();/ 記錄結(jié)束的時間值 System.out.println(運(yùn)行時間是: + (timeTestEnd - timeTestStart); ,49,5.6.2 Runtime類,Runtime類封裝了Java命令本身所啟動的實例進(jìn)程,也就是封裝了Java虛擬機(jī)進(jìn)程。一個Java虛擬機(jī)對應(yīng)一個Runtime實例對象。Runtime類中的許多方法和System類中
37、的方法相重復(fù),不能直接創(chuàng)建Runtime的實例對象,也就是不能通過new來創(chuàng)建,只能通過Runtime.getRuntime靜態(tài)方法來活得Runtime實例對象的引用。,50,Java虛擬機(jī)本身就是Windows上的一個進(jìn)程,這個進(jìn)程中可以啟動其它的windows程序,通過這種方式啟動的windows程序?qū)嵗头Q為子進(jìn)程。Java虛擬機(jī)調(diào)用Runtime的exec方法可以啟動這個子進(jìn)程,其返回值就是代表子進(jìn)程的Process對象。,51,【例5_12】在java程序中啟動一個windows記事本程序,并在該運(yùn)行實例中打開這個java程序的源文件,啟動的記事本程序在8秒鐘后被關(guān)閉。,public
38、 class ep5_12 public static void main(String args) Process p = null; try p = Runtime.getRuntime().exec(notepad.exe c:count.txt); / 獲得一個Runtime的實例對象并調(diào)用exec方法 Thread.sleep(8000); p.destroy(); catch (Exception e) e.printStackTrace(); ,52,5.7 Date與Calendar類,Java語言提供了以下2個類來處理日期。 java.util.Date:包裝了一個long類
39、型數(shù)據(jù),表示與GMT(格林威治標(biāo)準(zhǔn)時間)的1970年1月1日00:00:00這一刻所相距的毫秒數(shù)。 java.util.Calendar:可以靈活地設(shè)置或讀取日期中的年、月、日、時、分和秒等信息。,53,5.7.1 Date類,java.util包中的Date類表示特定的時間,精確到毫秒。 使用Date類的無參數(shù)構(gòu)造方法Date()創(chuàng)建的對象可以獲取本地當(dāng)前時間。 Date() 分配Date對象并初始化此對象,以表示分配它的時間(精確到毫秒)。,54,在類Date所有可以接受或返回年、月、日期、小時、分鐘和秒值的方法中,將使用下面的表示形式: 年份 y 由整數(shù) (y 1900)表示。 月份由從
40、 0 至 11 的整數(shù)表示;0 是一月、1 是二月等等;因此 11 是十二月。 日期(一月中的某天)按通常方式由整數(shù) 1 至 31 表示。,55,小時由從 0 至 23 的整數(shù)表示。因此,從午夜到 1 a.m. 的時間是 0 點,從中午到 1 p.m. 的時間是 12 點。 分鐘按通常方式由 0 至 59 的整數(shù)表示。 秒由 0 至 61 的整數(shù)表示;值 60 和 61 只對閏秒發(fā)生,盡管那樣,也只用在實際正確跟蹤閏秒的 Java 實現(xiàn)中。按當(dāng)前引入閏秒的方式,兩個閏秒在同一分鐘內(nèi)發(fā)生是極不可能的,但此規(guī)范遵循 ISO C 的日期和時間約定。,56,【例5_13】在下面的例子中,用三種格式輸出
41、時間。,import java.util.Date; import java.text.SimpleDateFormat; class ep5_13 public static void main(String args) Date nowTime = new Date(); System.out.println(nowTime); SimpleDateFormat matter1 = new SimpleDateFormat( time:yyyy年MM月dd日E 北京時間); System.out.println(matter1.format(nowTime); SimpleDateForm
42、at matter2 = new SimpleDateFormat( 北京時間:yyyy年MM月dd日HH時mm分ss秒); System.out.println(matter2.format(nowTime); Date date1 = new Date(1000), date2 = new Date(-1000); System.out.println(matter2.format(date1); System.out.println(matter2.format(date2); System.out.println(new Date(System.currentTimeMillis();
43、 ,G:Javajava ep5_13 Tue Feb 23 21:59:22 CST 2010 time:2010年02月23日星期二 北京 北京時間:2010年02月23日21時59分 北京時間:1970年01月01日08時00分 北京時間:1970年01月01日07時59分 Tue Feb 23 21:59:22 CST 2010,57,5.7.2 Calendar類,java.util.Calendar類是一個抽象類。它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些
44、方法。 抽象類不能采用new實例化,但我們可以使用Calendar類的static方法getInstance()初始化一個日歷對象,如: Calendar calendar = Calendar.getInstance();,58,set()和get()方法可用來設(shè)置和讀取日期的特定部分,比如年、月、日、時、分和秒等。上面的calendar對象可以調(diào)用方法: public final void set(int year, int month, int date); public final void set(int year, int month, int date, int hourOfDa
45、y, int minute); public final void set(int year, int month, int date, int hourOfDay, int minute, int second);,59,將日歷翻到任何一個時間,參數(shù)year取負(fù)數(shù)時表示公元前。 calendar對象調(diào)用方法: public int get(int field); 可以獲取有關(guān)年份、月份、小時、星期等信息,參數(shù)field的有效值由Calendar的靜態(tài)常量指定,例如: calendar.get(Calendar.MONTH); 返回一個整數(shù),如果該整數(shù)是0表示當(dāng)前日歷是在一月,該整數(shù)是1表示當(dāng)
46、前日歷是在二月等。,60,calendar對象調(diào)用方法: public long getTimeInMillis(); 返回此calendar 的時間值,以毫秒為單位。,61,5.8 Math與Random類,java.lang包中的Math 類也稱數(shù)學(xué)類,是一個工具類,它在解決與數(shù)學(xué)有關(guān)的一些問題是有著非常重要的作用。Math 類包含許多用來進(jìn)行科學(xué)計算的類方法,涉及大多數(shù)學(xué)函數(shù),如sin、cos、exp、abs等,這些方法可以直接通過類名調(diào)用。Math類還提供了Math.PI和Math.E兩個靜態(tài)數(shù)學(xué)常量:E和PI。它們的值分別為2.7182828284590452354和3.141592
47、65358979323846,該類是final的,不能被繼承,類中的方法和屬性全部是靜態(tài),不允許在類的外部創(chuàng)建Math類的對象。因此,只能使用Math類的方法而不能對其作任何更改。,62,5.8.1 Math類,63,使用這些方法時,用法為Math.* (*為方法名)。用法如: int a=Math.abs(124); int b=Math.floor(-5.2); double s=Math.sqrt(7);,64,【例5-15】Math類主要方法的舉例。,class ep5_15 public static void main(String args) System.out.println(Pi
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024學(xué)校鍋爐工環(huán)境保護(hù)與節(jié)能減排合同范本3篇
- 自動打鈴器課程設(shè)計數(shù)電
- 漢川市汽車營銷課程設(shè)計
- 自動飛行系統(tǒng)課程設(shè)計
- 2024年裝表接電工(初級工)技能鑒定理論考試復(fù)習(xí)題庫(含答案)
- 2024年美術(shù)教案課件
- 童話課程設(shè)計封面
- 立式車床主軸箱課程設(shè)計
- 小班兔子繪本課程設(shè)計
- 金融投資行業(yè)顧問工作總結(jié)
- GA 1802.2-2022生物安全領(lǐng)域反恐怖防范要求第2部分:病原微生物菌(毒)種保藏中心
- 企業(yè)EHS風(fēng)險管理基礎(chǔ)智慧樹知到答案章節(jié)測試2023年華東理工大學(xué)
- 健身俱樂部入場須知
- 井下機(jī)電安裝安全教育培訓(xùn)試題及答案
- TZJXDC 002-2022 電動摩托車和電動輕便摩托車用閥控式鉛酸蓄電池
- GB/T 4744-2013紡織品防水性能的檢測和評價靜水壓法
- GB/T 337.1-2002工業(yè)硝酸濃硝酸
- 《解放戰(zhàn)爭》(共48張PPT)
- 放射工作人員法律法規(guī)及防護(hù)知識培訓(xùn)考核試題附答案
- 勞動仲裁追加申請申請書(標(biāo)準(zhǔn)版)
- 西方法律思想史 課件
評論
0/150
提交評論