常用類
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;
}
}
}