Date
類Date表示特定的瞬間柳刮,精確到毫秒五辽。
本質(zhì)上擁有一個long fastTime屬性的包裝類,提供了很多屬性和方法用于快速獲取年月日蹋岩、時分秒。而fastTime就是時間戳学少。
public static void main(String[] args) {
???????? // 創(chuàng)建一個Date對象剪个,表示當(dāng)前時間
???????? // 根據(jù)當(dāng)前時區(qū)、當(dāng)前語言環(huán)境等創(chuàng)建當(dāng)前時間
???????? Date date1 = new Date();
???????? System.out.println(date1);
???????? // 獲取date1的時間戳
???????? long time1 = date1.getTime();
???????? System.out.println(time1);
???????? // 通過時間戳創(chuàng)建Date對象
???????? long ts1 = 0;
???????? Date date2 = new Date(ts1);
???????? System.out.println(date2);
???????? // 需求:構(gòu)建一個時間版确,表示未來一天的當(dāng)前時間扣囊。
???????? long ts2 =24*3600*1000+date1.getTime();
???????? Date date3 = new Date(ts2);
???????? System.out.println(date3.toString());
???? }
-----------------------------------------
public static void main(String[] args) {
???????? // 比較兩個時間
???????? Date d1 = new Date();
???????? Date d2 = new Date(d1.getTime()+1000);
???????? System.out.println(d1.before(d2));
???????? System.out.println(d1.after(d2));
???????? System.out.println(d1.compareTo(d2));
???????? System.out.println(d1.equals(d2));
???????? // d1.getTime() - d2.getTime()
???????? // setTime:改變Date對象的時間戳
???????? d1.setTime(d1.getTime()+24*3600*1000);
???????? System.out.println(d1);
???? }
---------------------------------------------------
????把Date對象格式化成特定的字符串
public static void main(String[] args) {
???????? Date date = new Date();
???????? System.out.println(date);
???????? // 日期格式化->字符串
???????? SimpleDateFormat? df = new?SimpleDateFormat();
???????? // [1]使用默認的模式和語言環(huán)境
???????? // 19-4-29 下午3:36
???????? StringdateStr = df.format(date);
???????? System.out.println(dateStr);
???????? // [2]使用指定模式格式化
???????? //xxxx年xx月xx日? xx時xx分xx秒
???????? SimpleDateFormat? df2 = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
???????? String dateStr2 = df2.format(date);
???????? System.out.println(dateStr2);
???????? // 修改模式
???????? // df2.applyPattern("yyyy-MM-dd");
???????? df2.applyPattern("yyyy/MM/dd");
???????? String dateStr3 = df2.format(date);
???????? System.out.println(dateStr3);
???? }
---------------------------------------------------
????把特定的格式的字符串解析成Date對象
public static void main(String[] args) {
???????? String str = "2019-04-29 15:48:00";
???????? SimpleDateFormatdf = new SimpleDateFormat("yyyy-MM-dd? HH:mm:ss");
???????? // 把子串->Date
???????? try {
????????????? Date date = df.parse(str);
????????????? System.out.println(date);
???????? }catch (ParseException e) {
????????????? e.printStackTrace();
???????? }
???? }
Calendar
Calendar是日歷類,本質(zhì)上內(nèi)部擁有一個屬性long time绒疗。表示該日歷所具體的時間戳侵歇。
同時Calendar內(nèi)部通過對time的運算計算出很多日歷字段,把這些日歷字段存在一個容器中吓蘑,并提供set/get方法用于設(shè)置或者訪問這些字段惕虑。
????????// 通過工廠設(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));
Math
Math 類包含用于執(zhí)行基本數(shù)學(xué)運算的方法溃蔫。例如,隨機數(shù)琳猫、平方伟叛、立方、函數(shù)脐嫂。
public static void main(String[] args) {
???????? // 常用屬性
???????? System.out.println(Math.PI);
???????? // 常用方法
???????? // 絕對值
???????? System.out.println(Math.abs(-10));
???????? //ceil/floor
???????? // 返回比10.1大的最小整數(shù)=> 向上取整
???????? System.out.println(Math.ceil(10.1));
???????? // 返回比10.1小的最大整數(shù)=> 向下取整
???????? System.out.println(Math.floor(10.1));
???????? // max/min
???????? System.out.println(Math.max(10,? 20));
???????? System.out.println(Math.min(10,? 20));
???????? //pow(x,y) x的y次方
???????? System.out.println(Math.pow(2,? 3));
???????? // Math.random 隨機數(shù)
???????? // 產(chǎn)生[m,n]隨機整數(shù)<=> (int)(Math.random()*(n-m+1)) + m
???????? // 四舍五入
???????? System.out.println(Math.round(4.4));
???????? // 把弧度轉(zhuǎn)角度
???????? System.out.println(Math.toDegrees(Math.PI/2));
???????? // 把角度轉(zhuǎn)化成弧度
???????? System.out.println(Math.toRadians(180));
???????? // (C)sin(a)/cos(a)/tan(a)? a為弧度
???????? System.out.println(Math.sin(Math.toRadians(30)));
????????// 需求:求兩點之間的距離(x1统刮,y1)-(x2紊遵,y2)的距離。
???????? //? Math.sqrt(Math.pow((y1-y2), 2)+Math.pow((x1-x2),2))
???? }
枚舉
枚舉是由一組固定的常量組成的類型侥蒙,自定義數(shù)據(jù)類型暗膜,可以用于聲明變量,且變量的取值必須是枚舉值的其中一個辉哥。
所有的枚舉類型隱性地繼承自 java.lang.Enum桦山。(枚舉實質(zhì)上還是類!而每個被枚舉的成員實質(zhì)就是一個枚舉類型的實例醋旦,他們默認都是public static final的恒水。可以直接通過枚舉類型名直接使用它們饲齐。)
枚舉的常量值一定是可列舉的有限值钉凌。所以常和switch搭配使用
語法:
[修飾符] enum enumName{
? 常量值1,
? 常量值2…
? 常量值n;
}
---------------------------------------------------
public enum Week {
???? MONDAY,
???? TUESDAY,
???? WEDNESDAY,
???? THURSDAY,
???? FRIDAY,
???? SATURDAY,
???? SUNDAY;
}
public static void main(String[] args) {
??????? //有一個變量表示星期幾,輸出對應(yīng)的教學(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;
??????????? }
??????? }
??? }
------------------------------------------------
????????枚舉和字符串轉(zhuǎn)化
public static void main(String[] args) {
???????? // 聲明一個Gender枚舉類型的變量gender,并取值為男
???????? Gender gender = Gender.男;
???????? // 枚舉值->字符串
???????? System.out.println(gender.toString());
???????? // 字符串串-> 枚舉值
???????? String str = "保密";
???????? // 可能產(chǎn)生IllegalArgumentException 非法參數(shù)異常
???????? Gendergender2= Enum.valueOf(Gender.class, str);
???????? System.out.println(gender2);
???? }