那些java中的經常使用類(一)

本節介紹一下java中那些經常使用的類,包括:系統相關類(System、Runtime)、日期時間類(Date等)、Object、Math、Random、File、枚舉類(Enum)java

1.系統相關類

  • System類

    • System類是一些與系統相關的屬性和方法的集合,且System類中全部的屬性和方法都是靜態的,要想引用這些屬性和方法,直接使用System類調用便可。
    • System類的構造方法是private修飾的,因此不能建立該類的實例對象,可是能夠經過類名直接調用。
    • System類還被final關鍵字修飾,因此不能被繼承。

  1.System類的成員變量算法

  • in:標準輸入流(鍵盤輸入),InputStream類型
  • out:標準輸出流(顯示器輸出),PrintStream類型
  • err:標準錯誤輸出流(顯示器輸出),PrintStream類型
1 System.out.println("hello world");

   2.System類的成員方法sql

  • getProperty方法:獲取系統的屬性信息,常見的屬性名以及屬性說明以下表所示編程

屬性名 屬性說明
java.version jdk版本
java.home jdk安裝目錄
os.name 操做系統名稱
os.version 操做系統版本
user.home 用戶宿主目錄
user.name 用戶名稱
user.dir 當前工做目錄

 代碼示例:數組

1         System.out.println("jdk版本:"+System.getProperty("java.version"));
2         System.out.println("操做系統:"+System.getProperty("os.name"));
3         System.out.println("用戶:"+System.getProperty("user.name"));
4         System.out.println("用戶目錄:"+System.getProperty("user.home"));
5         System.out.println("當前工做目錄:"+System.getProperty("user.dir"));             
  • currentTimeMillis方法:獲取當前的計算機時間,時間的表達格式爲當前計算機時間和GMT時間(格林威治時間)1970年1月1號0時0分0秒所差的毫秒數。dom

1     Long ctime = System.currentTimeMillis();
2     System.out.println("系統當前時間:"+ctime);//系統當前時間:1509009739936
  • arraycopy方法:進行數組拷貝,也就是將一個數組中的內容複製到另一個數組中的指定位置,因爲該方法是native方法,因此性能上比使用循環高效。(ArrayList的插入和刪除操做就是調用System類的arraycopy方法實現的性能

 1         //將數組按指定要求進行復制
 2         char[] a = {'A','B','C','D'};
 3         char[] b = {'1','2','3','4','5'};
 4         /*
 5          * 將原數組a從第1個索引開始複製到目標數組b的第2個索引開始的位置,一共複製2個元素
 6          *     便是將a[1]複製給b[2],a[2]複製給b[3],因此最終爲1 2 B C 5
 7          */
 8         System.arraycopy(a, 1, b, 2, 2);
 9         for (int i = 0; i < b.length; i++) {
10             System.out.print(b[i]+" ");
11         }//1 2 B C 5
  • gc方法:請求系統進行垃圾回收,至關於給GC加上了優先級。至於系統是否馬上回收,則取決於系統中垃圾回收算法的實現以及系統執行時的狀況,這個方法只是對Runtime類中的gc方法進行了一次包裝。測試

1         //請求垃圾回收
2         System.gc();
  • exit方法:退出程序,其中status的值爲0表明正常退出,非零表明異常退出。使用該方法能夠在圖形界面編程中實現程序的退出功能等。spa

  • Runtime類

 這裏首先給出Runtime類的一些總結:操作系統

  • Runtime類封裝了程序運行時的環境,每一個java應用程序都有一個Runtime類的實例,使得應用程序可以與運行時的環境相鏈接。
  • 和System類同樣,不能建立Runtime類的實例對象(構造方法私有的),可是可以經過getRuntime靜態方法獲取該對象的一個引用。
  • 一旦獲得了一個當前Runtime類的引用,就能夠經過調用Runtime對象的成員方法來控制JVM的狀態和行爲。

 1.Runtime類的內存管理

Runtime類表明了java程序的運行環境,經過Runtime類能夠訪問JVM的相關信息,如處理器數量、內存信息等等。另外還有Runtime類的gc方法,通知JVM進行垃圾回收,這是一個native方法,由C語言實現。

1     //獲取java程序關聯的運行時對象
2     Runtime runtime = Runtime.getRuntime();
3     
4     System.out.println("處理器數量:"+runtime.availableProcessors());
5     System.out.println("空閒內存數:"+runtime.freeMemory());
6     System.out.println("總內存數:"+runtime.totalMemory());
7     System.out.println("最大可用內存數:"+runtime.maxMemory());

2.Runtime類執行其餘程序

除了可以獲取JVM的信息以外,Runtime類還能夠直接單獨啓動一條進程來運行操做系統的命令,主要調用exec這個成員方法來實現。

  • exec方法返回一個Process對象,可使用這個對象來控制java程序與新運行的進程來進行交互操做。
  • exec方法的本質是依賴於環境。
  • Runtime提供了系列exec方法來運行操做系統的命令,關於它們的用法和差異能夠查閱API文檔。
1     //獲取java程序關聯的運行時對象
2     Runtime runtime = Runtime.getRuntime();
3 
4     //運行記事本程序
5     runtime.exec("notepad.exe");

 2.日期時間類

java提供了一系列用於處理日期、時間的類,包括建立日期、時間對象,獲取系統當前日期、時間等的操做。

  • Date類

java提供了Date類來處理日期和時間,這裏介紹的是java.util包下的Date類,而不是java.sql包下的Date類。因爲這個Date類的歷史悠久,因此大部分構造器、成員方法已經失效,這裏先介紹它未失效的兩個構造器:

  1. Date():生成一個表明當前日期時間的Date對象,該方法實際是調用System類的currentTimeMillis()方法獲取long型的整數做爲日期參數。
  2. Date(long Date):根據指定的long型整數來生成一個Date對象。建立的對象是從1970年01月01日00時(格林威治時間)開始以毫秒計算時間,計算 millisec 毫秒。

因爲Date類的大部分紅員方法也失效了,這裏介紹一些還未失效的方法:

  1. boolean after(Date when):測試該日期是否在指定日期when以後。
  2. boolean before(Date when):測試該日期是否在指定日期when以前。
  3. int compareTo(Date anotherDate):比較兩個日期的大小,後面的時間大於前面的時間時返回-1,不然返回1。
  4. boolean equals(Object obj):比較兩個時間是否相同,當表示同一時刻時返回true。
  5. long getTime():返回該時間對應的long型整數,一個毫秒值。
  6. void setDate(long time):設置Date對象的時間。
 1         Date date = new Date();
 2         System.out.println(date);//Mon Oct 30 15:09:54 CST 2017
 3         System.out.println(date.getTime());//1509347462950
 4         
 5         Date d1 = new Date(10000);
 6         Date d2 = new Date(20000);
 7         System.out.println(d1.before(d2));//true
 8         System.out.println(d1.compareTo(d2));//-1
 9         
10         date.setTime(100000000);
11         System.out.println(date);//Fri Jan 02 11:46:40 CST 1970

 Date對象的格式化能夠採用SimpleDateFormat這個類的format(Date date)方法,具體代碼示例以下:

1         Date date = new Date();
2         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");    
3         System.out.println(simpleDateFormat.format(date));//2017/10/30 15:15:48
  • Calendar類

由於Date類在設計上的一些缺陷,因此java提供了Calendar類來更好地處理日期和時間。Calendar是一個抽象類,因此不能建立一個Calendar類的實例對象,可是能夠經過getInstance靜態方法得到。這裏介紹一些Calendar類經常使用的操做:

  1. getInstance():獲取Calendar的實例對象。
  2. get():獲取calendar對象的日期和時間信息。
  3. set():設置日期和時間。
  4. getTimeInMillis():獲取時間的毫秒級數據。
  5. 此外還介紹了一些日期時間格式化、計算時間差的方法。
 1     //經過getInstance()方法得到Calendar的實例對象
 2     Calendar calendar = Calendar.getInstance();
 3     
 4     /*
 5      * 經過calendar對象獲取日期和時間信息
 6      *     注意:Calendar類中年份的數值直接書寫,月份的值爲實際的月份值減1,日期的值就是實際的日期值。
 7      */
 8     System.out.println(calendar.get(calendar.YEAR));//
 9     System.out.println(calendar.get(calendar.MONTH)+1);//
10     System.out.println(calendar.get(calendar.DAY_OF_MONTH));//
11     System.out.println(calendar.get(calendar.HOUR_OF_DAY));//
12     System.out.println(calendar.get(calendar.MINUTE));//
13     System.out.println(calendar.get(calendar.SECOND));//14     
15     //設置日期和時間
16     calendar.set(2017, 11, 10, 15, 30, 20);
17     
18     /*利用SimpleDateFormat進行格式化
19      *    注意:此處format方法傳入的參數爲一個Date對象,因此須要調用calendar對象的getTime方法以獲取一個Date對象
20      */
21     System.out.println(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(calendar.getTime()));//2017/12/10 15:30:20
22     
23     /*
24      *計算時間差:
25      *    經過調用calendar類的getTimeInMillis方法,計算毫秒級的時間差,再進行換算獲得所需的時間差格式 
26      */
27     Calendar startCalendar = Calendar.getInstance();
28     startCalendar.set(2017, 6, 1, 12, 30, 50);//起始時間爲2017/7/1 12:30:50
29     Calendar endCalendar = Calendar.getInstance();//結束時間爲當前時間
30     long deltaTime = endCalendar.getTimeInMillis() - startCalendar.getTimeInMillis() ;
31     //直接輸出毫秒級的時間差
32     System.out.println(deltaTime);
33     //換算整天數的時間差
34     System.out.println(deltaTime/(1000*3600*24));

 

下一節將介紹剩下的幾個經常使用類。

相關文章
相關標籤/搜索