Java常用基礎工具類

常用類

1.常用基礎類
    1.1 Date類
    1.2 Calendar類
    1.3 SimpleDateFormat類
    1.4 Math類
    1.5 Random類
    1.6 Runtime類
    1.7 System類
2.枚舉
    2.1 什么是枚舉
    2.2 枚舉結合switch的使用

教學目標

1.了解常用類的作用
2.掌握常用類中的常用方法
3.了解枚舉的使用

第一節(jié) 常用基礎類

1.1 Date類

Date表示特定的瞬間,精確到毫秒。Date類中的大部分方法都已經被Calendar類中的方法所取代。

Date類中的構造方法:

方法名 描述
Date() 分配Date對象并初始化此對象,以表示分配它的時間(精確到毫秒)。
Date(long date) 分配Date對象并初始化此對象,以表示自從標準基準時間(稱為“歷元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以來的指定毫秒數。

Date類中的成員方法:

? 1.判斷兩個日期對象的前后

        Date date1 = new Date();//獲取當前系統(tǒng)時間
        Date date2 = new Date(10000);//獲取從標準基準時間起10000毫秒的時間點
        boolean boo1 = date1.after(date2);//若date1在date2之后,則返回true,否則返回false
        boolean boo2 = date1.before(date2);//若date1在date2之前,則返回true,否則返回false

? 2.比較兩個日期對象

        Date date1 = new Date();
        Date date2 = new Date(10000);
        int i = date1.compareTo(date2);

? 3.獲取時間

        Date date = new Date();
        long l = date.getTime();

? 4.修改時間

        Date date = new Date();
        date.setTime(1000);
1.2 Calendar類

Calendar類是一個抽象類,它為特定瞬間與一組諸如YEAR、MONTH、DAY_OF_MONTH、HOUR
等日歷字段之間的轉換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距歷元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00.000,格里高利歷)的偏移量。

Calendar類時抽象類不能創(chuàng)建對象,可以通過Calendar類中的靜態(tài)getInstance方法獲取對象(一個費抽象子類對象).

Calendar類中的常用靜態(tài)常量屬性:

屬性 描述(這些都是特定與日歷的值)
public static final int YEAR 指示年的字段數字
public static final int MONTH 指示月份的字段數字
public static final int DATE 指示一個月中的某天
public static final int DAY_OF_MONTH 指示一個月中的某天
public static final int DAY_OF_WEEK 指示一周中的某天
public static final int DAY_OF_WEEK_IN_MONTH 指示當月中的第幾個星期
public static final int DAY_OF_YEAR 指示一年中的某天

Calendar類中常用的成員方法:

? 1.獲取一個Calendar對象:

        Calendar c = Calendar.newInstance();//newInstance方法是一個靜態(tài)的方法,直接通過類名調用
        System.out.println(c);

? 2.獲取某個日歷對象的指定屬性的值:

        /*
        get(int field)  參數就是指定的屬性,可以使用靜態(tài)常量屬性名代替int值
        */
        //注意:獲取日期屬性,不能直接用c.DATE,DATE屬性時靜態(tài)常量,所有Calendar類對象都共享并相同的值
        Calendar c = Calendar.newInstance();
        System.out.println(c.get(Calendar.DATE));//獲取c對象所表示日歷的日期屬性值

? 3.修改某個日歷對象的指定屬性值:

        /*
        set(int field, int value) 第一個參數表示屬性,第二個參數表示修改的值
        */
        Calendar c = Calendar.newInstance();    
        c.set(Calendar.DATE, 2017);

? 4.獲取某個屬性所表示的最大、最小值

        /*
        getMaximum(int field)       獲取屬性的最大值
        getMinimum(int field)       獲取屬性的最小值
        */
        Calendar c = Calendar.newInstance();
        int max = c.getMaximum(Calendar.DATE);//獲取日期的最大值,無論c表示幾月份,max的值都是31
        int min = c.getMinimum(Calendar.DATE);//獲取日期的最小值,無論c表示幾月份,min的值都是1

? 5.獲取指定Calendar對象的指定屬性的最大、最小值

        /*
        getActualMaximum(int field) 獲取指定日歷的指定屬性的最大值
        getActualMinimum(int field) 獲取指定日歷的指定屬性的最小值
        */
        Calendar c = Calendar.newInstance();
        int max = c.getActualMaximum(Calendar.DATE);
        //若c表示的1月,則max值為31;若c表示的4月,則max值為30;
        int min = c.getActualMimimum(Calendar.DATE);//無論c表示幾月份,min值都是1
1.3 SimpleDateFormat類

SimpleDateFormat是一個以與語言環(huán)境有關的方式來格式化和解析日期的具體類。

它允許進行格式化(日期 -> 文本)、解析(文本 -> 日期)和規(guī)范化。

通過SimpleDateFormat類將字符串和日期相互轉換時,需要使用一些時間模式字母,常用的時間模式字母:

字母 日期或時間元素 示例
y 1996;96
M 年中的月份 July;Jul;07
w 年中的周數 27
D 年中的天數 189
d 月份中的天數 10
a Am/pm 標記 PM
H 一天中的小時數(0-23) 0
h am/pm 中的小時數(1-12) 12
m 小時中的分鐘數 30
s 分鐘中的秒數 55
S 毫秒數 978

? 1.格式化日期:

        /*
        format(Date date)   將date對象格式化成指定格式的日期字符串
        */
        String format = "yyyy-MM-dd a hh:mm:ss";
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date date = new Date();
        String dateStr = sdf.format(date);

? 2.解析日期:

        /*
        parse(String str)   將str對象解析成一個日期對象
        */
        String dateStr = "2017-12-01 上午 10:10:10";
        String format = "yyyy-MM-dd a hh:mm:ss";
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date date = sdf.parse(dateStr);
1.4 Math類

Math類包含用于執(zhí)行基本數學運算的方法,如初等指數、對數、平方根和三角函數。

Math類中的靜態(tài)常量屬性

屬性 描述
public static final E 比任何其他值都更接近 e(即自然對數的底數)的double值。
public static final PI 比任何其他值都更接近 pi(即圓的周長與直徑之比)的double值。

Math類中常用的成員方法:

? 1.絕對值

        int a = -5;
        System.out.println(Math.abs(a));//輸出的結果是5

? 2.最大、最小值

        int a = 5;
        int b = 10;
        System.out.println(Math.max(a,b));//輸出結果為10
        System.out.println(Math.min(a,b));//輸出結果為5

? 3.冪運算

        int a = 3;
        int b = 4;
        System.out.println(Math.pow(a,b));//結果為3*3*3*3的結果

? 4.平方根、立方根

        int a = 8;
        System.out.println(Math.sqrt(a));//結果為8的正平方跟
        System.out.println(Math.cbrt(a));//結果為8的立方根

? 5.四舍五入

        double a = 3.6;
        System.out.println(Math.round(a));//結果為4

? 6.隨機數

        //產生一個3~9之間的隨機數
        int a = (int)(Math.random()*(9-3+1)+3);
1.5 Random類

此類的實例用于生成偽隨機數流。此類使用 48 位的種子,使用線性同余公式 (linear congruential form) 對其進行了修改所得。

如果用相同的種子創(chuàng)建兩個Random實例,則對每個實例進行相同的方法調用序列,它們將生成并返回相同的數字序列。

Random類中的構造方法:

方法名 描述
Random() 創(chuàng)建一個新的隨機數生成器。此構造方法將隨機數生成器的種子設置為某個值,該值與此構造方法的所有其他調用所用的值完全不同。
Random(long seed) 使用單個 long 種子創(chuàng)建一個新的隨機數生成器。該種子是偽隨機數生成器的內部狀態(tài)的初始值.

? 注意:若long種子確定,則在不同程序中,相同次數產生的隨機數是相同的。

Random類中的常用方法:

? 1.產生隨機數

        Random random = new Random(10);//以10為種子,使用線性同余公式產生偽隨機數
        int i1 = random.nextInt();//產生一個隨機整數
        int i2 = random.nextInt(10);//產生一個10以內的隨機整數
        double d = random.nextDouble();//產生一個隨機double值
        boolean b = random.nextBoolean();//產生一個隨機boolean值

? 2.修改種子

        Random random = new Random(10);
        random.setSeed(20);//將隨機數種子設置為20
1.6 Runtime類

每個 Java 應用程序都有一個Runtime類實例,使應用程序能夠與其運行的環(huán)境相連接??梢酝ㄟ^
getRuntime方法獲取當前運行時。

1.7 System類

System類包含一些有用的類字段和方法。它不能被實例化。

System類中的常見屬性:
| 屬性 | 描述 |
| ----------------------------------- | ------- |
| public static fianl PrintStream err | 標準錯誤輸出流 |
| public static final InputStream in | 標準輸入流 |
| public static final PrintStream out | 標準輸出流 |

System類中的常見方法:

? 1.獲取系統(tǒng)時間

        long time1 = System.currentTimeMillis();//獲取當前時間,毫秒數
        long time2 = System.nanoTime();//獲取當前時間,毫微秒

? 2.強制退出虛擬機

        System.exit();//強制退出當前正在執(zhí)行的虛擬機

? 3.垃圾回收處理機制:

? gc(): 運行垃圾回收器。

第二節(jié) 枚舉

2.1 什么是枚舉

枚舉是一個引用類型,枚舉就是一個規(guī)定了取值范圍的變量類型

聲明枚舉:

? 格式:

? public enum 枚舉名{

? //枚舉的取值范圍

? //枚舉中可以生命方法

? }

        //聲明一個表示季節(jié)的枚舉
        public enum Season{
            SPRING,
            SUMMER,
            FULL,
            WINTER;
            public void fun(){}
        }

? 注意:

  • 枚舉中的成員是此枚舉的取值范圍;
  • 所有的值之間使用逗號分隔,最后一個值后可以加分號也可以不加分號;
  • 在枚舉中可以聲明方法,但是必須在所有的取值之后聲明,而且最后一個值后必須使用分號隔開.
2.2 枚舉結合switch結構使用

代碼實現:

    public class TestSeasonEnmu{
            public static void main(String[]args){
                //聲明一個枚舉變量
                Season season = Season.SPRING;
                //switch小括號中的表達式類型可以是枚舉類型
                switch(season){
                  //每個case后的常量直接寫枚舉的取值范圍
                  case SPRING:
                    System.out.println("春天");
                    break;
                  case SUMMER:
                    System.out.println("夏天");
                    break;
                  case FULL:
                    System.out.println("秋天");
                    break;
                  case WINTER:
                    System.out.println("冬天");
                    break;
                }
            }
        }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容