常用類(二)
今天講的是日期時間類
時間戳的意思是:距離特定時間的時間間隔拉背,特定時間是有規(guī)定的:1970年1月1日 00:00:00碧磅,系統(tǒng)重裝的時候也可以看見1970年1月1日 8:00:00:000
時間戳就是距離1970年1月1日 00點00分00秒000毫秒的時間間隔
比如今天計算機上顯示的是2019年4月29日 14點14分00秒,那他的時間間隔是非常大的,時間間隔是用毫秒來表示的眷射,用long類型來存儲的
時間是一個整型昆雀。
小知識:格林尼治時間(GMT)為世界時間標(biāo)準(zhǔn)甩苛,因為格林尼治時間的正午經(jīng)過英國那里的本初子午線会宪,因為我們是中國逻悠,位于東八區(qū),所以要加上8小時韭脊,這是地理問題蹂风。
1.Date(此類有很多過時的東西,但是沒過時的依舊可以使用)
Date:特定的瞬間乾蓬,精確到毫秒。
Date 類本質(zhì)上擁有一個long fastTime屬性的包裝類慎恒,提供了很多屬性和方法用于快速獲取年月日任内、時分秒。而fastTime就是時間戳
創(chuàng)建Date對象的時候記得是util融柬;
寫日期的時候yyyy是年死嗦,MM是月份,dd是天數(shù)粒氧,HH是小時越除,mm是分鐘,ss是秒外盯。
Calendar
因為Date本身有很多方法在JDK1.1后已經(jīng)過時了摘盆,所以推薦常使用Calendar取代Date獲取單獨的年月日時分秒。
他是一個日歷類饱苟,本質(zhì)上內(nèi)部里有一個屬性孩擂,叫:long time ,他表示的是該日歷所具體的時間戳箱熬,同時Calendar內(nèi)部通過對time 的運算計算出很多日歷字段类垦,把這些日歷字段存在一個容器中,并提供set和get方法給人設(shè)置或者訪問這些字段
案例:獲取Calendar中的日歷字符值
// 通過工廠設(shè)計模式構(gòu)建一個對象
Calendar cal = Calendar.getInstance();
System.out.println(cal.toString());
// 獲取年
System.out.println(cal.get(Calendar.YEAR));
// 獲取月城须,索引從0開始蚤认,0-表示1月
System.out.println(cal.get(Calendar.MONTH));
System.out.println(cal.get(Calendar.DAY_OF_MONTH));
// 時
System.out.println(cal.get(Calendar.HOUR_OF_DAY));
// 分
System.out.println(cal.get(Calendar.MINUTE));
// 秒
System.out.println(cal.get(Calendar.SECOND));
System.out.println(cal.get(Calendar.MILLISECOND));
// 獲取星期 一周的第一天是周日開始
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
// 本月的第一天和本月的最后一天
System.out.println(cal.getActualMinimum(Calendar.DAY_OF_MONTH));
System.out.println(cal.getActualMaximum(Calendar.DAY_OF_MONTH));
2.Math
Math 類包含用于執(zhí)行基本數(shù)學(xué)運算的方法。例如糕伐,隨機數(shù)砰琢、平方、立方赤炒。
里面的PI 等于數(shù)學(xué)里的π
經(jīng)常用Math是弄一些絕對值(函數(shù)為abs)
System.out.println("Math.abs(-10)");
向上取整(函數(shù)為ceil)/ 向下取整(函數(shù)為floor)
system.out.println(Math.ceil(10.1));
這個用的是向上取整的函數(shù)氯析,結(jié)果是10.1變成了10.0,因為是取最小整數(shù)莺褒,所以得這樣的結(jié)果
如果是用向下取整掩缓,取的是最大整數(shù),把代碼換成floor就可以了遵岩。
時間比大小
max(大)和min(心憷薄)
system.out.println(Math.max(10.20))巡通;
就誰大,想比小就換函數(shù)成min舍哄。
pow(x,y) x的y次方(函數(shù)為pow)
System.out.println(Math.pow(2, 3));
四舍五入(函數(shù)為round)
System.out.println(Math.round(4.4));
3.枚舉(挺重要的)
枚舉是由一組固定的常量宴凉,常量,常量組成的類型表悬,自定義數(shù)據(jù)類型弥锄,因為是自定義類型,所以可以聲明變量
平時是這樣弄
【修飾符】 enum enumName{
? ? ? 常量值1.
? ? ? 常量值2蟆沫,
? 常量值3
? 籽暇。。饭庞。
? 常量值N 戒悠;(注釋:分號加不加無所謂,建議加舟山,多了沒毛渤窈)
}
枚舉的常量值呢,一定要是可以列舉的有限值累盗,常量值類型都默認為public static final
比如你用定義了男和女的一個枚舉類型
你想用gender來聲明變量寒矿,那么變量的值必須是枚舉值里的其中一個,比如你弄了男和女幅骄,那么你輸入的時候只能輸男和女
其實直接把枚舉當(dāng)成一個類 劫窒, 會更好理解一些,因為java中所有的枚舉類型都繼承與enum類
枚舉轉(zhuǎn)化成字符串
Gender gender = Gender.男;
system.out.println(gender.tostring( ));
如果字符串要轉(zhuǎn)化成枚舉值
Gender gender = Gender.男;
String str = “男”拆座;
但是可能會產(chǎn)生非法參數(shù)異常主巍,也就是IllegalArgumentException
gender gender2 = Enum.valueOf(Gender.class, string);
System.out.println(gender2);
4.
? ? ? ? ? ? ? ? 枚舉和switch
public enum Week {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY;
}
public static void main(String[] args) {
// 需求:有一個變量表示星期幾,輸出對于的教學(xué)安排
Week week = Week.TUESDAY;
switch (week) {
case MONDAY:
case TUESDAY:
case THURSDAY:
case FRIDAY:
case SATURDAY:{
System.out.println("上課");
break;
}
case WEDNESDAY:
case SUNDAY:{
System.out.println("練習(xí)");
break;
}
}
}
枚舉的其他方法
public static void main(String[] args) {
// 枚舉變量的其他方法
Week week = Week.SUNDAY;
System.out.println(week.name());
System.out.println(week.ordinal());
}
總結(jié)
1.只能夠取特定值中的一個
2.使用enum關(guān)鍵字
3.所有的枚舉類型隱性地繼承自 java.lang.Enum挪凑。(枚舉實質(zhì)上還是類孕索!而每個被枚舉的成員實質(zhì)就是一個枚舉類型的實例,他們默認都是public static final的躏碳「阈瘢可以直接通過枚舉類型名直接使用它們。)
4.強烈建議當(dāng)你需要定義一組常量時菇绵,使用枚舉類型