Java基礎-->其他常見對象

第一節   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> 可以設置特有的系統屬性信息


示例:


第二節   Runtime 類

一、概述:

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 類

一、概述:

       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)


示例:


練習:將某一小數保留爲指定位數的小數


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章