第一節 System 類
一、概述:
1、System類是描述系統一些信息的類,不可以實例化,也無構造函數。
2、System類中的方法和屬性都是靜態的。
in :標準輸入流,默認是鍵盤。
out:標準輸出流,默認是控制檯。
二、方法:
1、獲取系統的屬性信息:
Properties getProperties();
說明:1)此方法返回的雙列集合,即鍵值對;因爲Properties是Hahstable的子類,也就是Map集合的一個子類對象,那麼通過Map方法取出該集合中的元素。
2)該集合存儲的都是字符串,沒有泛型定義
2、獲取指定屬性信息:
String System.getProperty(String key);
3、在系統內定義特有信息:
void System.setProperty(String key,String value);
4、如何在jvm啓動時,加載一些屬性信息:
通過命令:java -D<name>=<value> 可以設置特有的系統屬性信息
示例:
一、概述:
1、每個java應用程序都有一個Runtime類實例,使用應用程序能與其中運行的環境相連接,應用程序不能創建自己的Runtime類的實例,是由系統底層自己創建的。
2、該類並未提供構造函數:說明不可以new對象,那麼會直接想到該類中的方法都是靜態的。查閱API文檔發現,該類中還有非靜態方法,說明該類中肯定會提供方法獲取該類對象,並且該方法是靜態的,且返回值類型是該類類型。
3、由這個特點可以看出該類使用了單例設計模式。
二、方法:
1、獲取本類對象:
static Runtime getRuntime();
2、在單獨的進程中執行指定字符串命令:
Process exec(String command);
3、在Process中有一個殺掉子進程的方法,可將exec方法開啓的進程殺掉
void destroy();
示例:
一、Date類
1、概述:
java中默認的格式如:Sun Jan 16 10:20:48 CST 2011
這樣的格式不一定滿足每個人的需求,那麼就需要自定義格式,需要格式化模式。具體步驟:
1)創建Date對象
2)將模式封裝到SimpleDateFormat對象中
3)調用format方法讓模式格式化指定Date對象
示例:
二、Calendar類
1、概述:
1)Calendar是一個抽象類,它爲特定瞬間與一組諸如YEAR、MONTH、DAY_OF_MONTH等日曆字段之間的轉換提供了一些方法。
2)Calendar可以對年月日等時間進行獲取。並提供了相應的子段值。可參閱API文檔。
2、方法:
2.1、基本獲取時間
1)獲取年份:Calendar.YEAR
2)獲取月份:Calendar.MONTH
3)獲取日期:Calendar.DAY_OF_MONTH
4)獲取星期:Calendar.DAY_OF_WEEK
5)獲取小時:Calendar.HOUR_OF_DAY
6)獲取分鐘:Calendar.MINUTE
7)獲取秒數:Calendar.SECOND
2.2、設置時間:
1)爲給定的日曆字段添加或減去指定的時間值: ---> void add(int field,int amount);
2)獲取指定的日曆字段對應的時間值: ---> int get(int field);
3)將給定日曆字段對應的時間值設置爲給定值: ---> void set(int field,int value);
設置日曆字段 YEAR、MONTH和DAY_OF_MONTH的值: ---> void set(int year,int month,int date);
3、關於Calendar中的常量值理解:
當我在獲取時間的時候,會少寫get方法,而直接寫的是Calendar.DAY_OF_MONTH,結果發現不是自己想要的值,而是一個固定爲5的值,爲什麼呢?
今天我翻閱了api文檔,查看了一下關於Calendar中的DAY_OF_MONTH字段數字,沒錯,它被稱爲get 和 set 的字段數字,而且你細心一點就會發現,它是這樣被定義的:
public static finalint DAY_OF_MONTH
發現這些字段數字都是靜態的常量值,那爲什麼還能對其修改呢?還可以使用add,set等方法對其設置呢?我對這個問題開始也很迷惑,百度了之後,才大概有些明白,我的理解是這樣的:
你可以把這個Calendar中的YEAR的常量值理解爲它的小名,打個比方說,一個人大名叫張三,你可以叫他的小名爲小張,這個張三就相當於YEAR,而這個小張就是YEAR的常量值,爲什麼要這麼設置呢?
這就要和字段值相聯繫了。其實,這些設置的操作是對具體時間的修改,而不是對這些字段值的修改,獲取的也是修改後的時間值。之所以稱之爲字段值,就是應爲方便設置:簡單地說就是將日期分爲幾段,如圖所示:
YEAR MONTH DAY_OF_MONTH ...
1 2 5 ...
(相應的字段值請看Calendar的常量值)
那麼要是對某一部分進行修改的話,如設置年份爲2013年,則爲set(1,2013)
其中的code就相當於字段值,而value就是所要設置的時間值,那麼字段值是常量就不會改變的。而是將字段值(鍵)這個常量所對應的要修改的時間值(值)進行修改。所以並沒有改變這個常量,爲何還要寫成YEAR這樣的單詞呢,而不是用1表示呢?當然,這就是靜態常量的好處了,設爲靜態static就是爲了加載Calendar這個類的時候就存在了,直接可以用了;而設爲常量final就是爲了方便識別,用起來方便,名字好記,而不用記那麼多數字。(其實就可以理解爲相應的數字代表相應的時間名稱)。
簡單地說,就是你修改的是Calenda中某個字段值的屬性,改變的是它的狀態,而不是它的時間這個名字。如,不是將YEAR的字段值1改變爲2013,而是將這個字段值爲1的YEAR所對應的時間值2012年改爲2013這個數值。一個是數字(字段值),一個是數值(時間值或稱爲時間信息)。
示例:
練習:
1、獲取任意年的二月有多少天:
2、獲取前一天的現在這個時刻
3、計算有效上課天數,每週六日不上課,計算任意年從九月到十月的有效上課天數
一、概述:
Math類中全爲靜態方法,都是數學中的一些計算方法。
二、方法:
1、double ceil(double d) ---> 返回大於指定數據的最小整數
2、double floor(double d) ---> 返回小於指定數據的最大整數
3、double pow(double a,double b) ---> 返回a的b次方
4、double/float round(double/float m) ---> 返回m四捨五入的值
5、double random() ---> 返回正號的double值,是一個 0<=X<1.0 的隨機數X
三、Random類
這是一個java.util中的一個單獨的類,獲取隨機數。與Math中的random是一樣的,不過這個類有自身的方法,可以將相應的隨機數強轉爲指定基本數據類型。
如:int nextInt(int n)
示例:
練習:將某一小數保留爲指定位數的小數