System類
所屬包:java.lang.System
System類包含一些有用的類字段和方法,它不能被實例化,類中的方法和屬性都是靜態(tài)的
- err:標(biāo)準(zhǔn)錯誤輸出流
- in:標(biāo)準(zhǔn)輸入流
- out:標(biāo)準(zhǔn)輸出流
常見方法:
long currentTimeMillis(); // 獲取當(dāng)前時間的毫秒值 1970-1-1
void exit(0); // 終止運(yùn)行Java虛擬機(jī)
void gc(); // 運(yùn)行垃圾回收器
Properties getProperties(); // 獲取指定的環(huán)境變量值
Properties:實際上是HashMap<Object, Object>
public static void main(String[] args){
// 獲取系統(tǒng)的屬性信息诉稍,并存儲到Properties集合中
Properties prop = System.getProperties();
// Properties集合中存儲的都是String類型的鍵和值,最好使用它提供的方法
Set<String> nameSet = prop.stringPropertyNames();
for(String name : nameSet){
String value = prop.getProperty(name);
}
System.out.println("hello"+System.getProperty("line.separator")+"zimo");
// 給系統(tǒng)設(shè)置信息
System.setProperty("myclasspath", "c:\myclass");
}
Runtime類
所屬包:java.lang.Runtime
每個Java應(yīng)用程序都有一個Runtime類實例踏施,應(yīng)用程序無法創(chuàng)建自己的Runtime類實例叮叹,可以用過getRuntime方法獲取當(dāng)前運(yùn)行時間
- 如果一個類沒有構(gòu)造方法摘要,說明該類被私有化無法創(chuàng)建對象
- 默認(rèn)該類方法都是靜態(tài)方法
- 如果該類存在一個非靜態(tài)方法娃属,說明該類應(yīng)該提供靜態(tài)的返回該類對象的方法
- 只有一個返回該類對象六荒,說明Runtime類使用了單例設(shè)計模式
public static void main(String[] args) throws IOException{
Runtime r = Runtime.getRuntime();
r.exec("notepad.exe"); // 打開記事本
Process p = r.exec("C:\\abc\\QQ.exe"); // 打開QQ
Thread.sleep(5000);
// 殺死它開啟的進(jìn)程
p.destroy();
}
Math類
所屬包:java.lang.Math
包含基本數(shù)學(xué)運(yùn)算的方法护姆,如初等指數(shù)、對數(shù)掏击、平方根等卵皂,都是靜態(tài)的方法
- 常用的方法:
abs(); // 絕對值
pow(); // 返回x的n次冪 pow(x,n);
max(); // 返回最大值
min(); // 返回最小值
ceil(); // 返回大于參數(shù)的最小整數(shù) 12.56--->> 13
floor(); // 返回小于參數(shù)的最大整數(shù) 12.56--->> 12
round(); // 返回參數(shù)四舍五入的整數(shù) 12.56--->> 13 12.46--->> 12
random(); // 返回 0.0 - 1.0 之間的偽隨機(jī)值
...
public static void main(String[] args) {
Random r = new Random();
double d = r.nextDouble();
int i = r.nextInt(6) + 1; // 1 - 6
}
Date類
所屬包:java.util.Date
很多方法已經(jīng)過時,被Calendar類替代
- 年份:y由整數(shù) y - 1900表述
- 月份:從 0 - 11 表示: 0是一月 ... 11是十二月
- 日期:通常由整數(shù)1 - 31表示
- 小時:通常由0 - 23的整數(shù)表示 1 a.m. 是0點 1 p.m. 是12點
- 分鐘:通常由0 - 61的表示砚亭,60灯变、61只對閏秒發(fā)生
閏秒:
- 當(dāng)前幾乎所有操作系統(tǒng)都假定 1 天 = 24 × 60 × 60 = 86400 秒。但對于 UTC捅膘,大約每一兩年出現(xiàn)一次額外的一秒添祸,稱為“閏秒”。
- 閏秒始終作為當(dāng)天的最后一秒增加寻仗,并且始終在 12 月 31 日或 6 月 30 日增加刃泌。
例如,1995 年的最后一分鐘是 61 秒署尤,因為增加了閏秒耙替。大多數(shù)計算機(jī)時鐘不是特別的準(zhǔn)確,因此不能反映閏秒的差別沐寺。
package Date;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
// 獲取當(dāng)前系統(tǒng)時間戳
long time = System.currentTimeMillis();
System.out.println(time);
// 獲取當(dāng)前系統(tǒng)時間對象
Date date = new Date();
System.out.println(date);
//獲取指定時間對象
Date date1 = new Date(time);
}
}
- 毫秒轉(zhuǎn)日期對象:
- 通過Date對象的構(gòu)造方法:
new Date(timeMillis)
- 通過Date對象的構(gòu)造方法:
- 日期對象轉(zhuǎn)毫秒:
- 通過Date對象的getTime方法:
long getTime()
- 通過Date對象的setTime方法:
void setTime()
- 通過Date對象的getTime方法:
對日期對象進(jìn)行格式化
- DateFormat:格式化日期對象
- SimpleDateFormat:自定義格式化日期對象
- parse():日期字符串轉(zhuǎn)成日期對象
public static void main(String[] args){
Date d = new Date();
DateFormat df = DateFormat.getDateInstance();
String date = df.format(d); // 2020-6-17
df = DateFormat.getDateTimeInstance();
date = df.format(d); // 2020-6-17 18:06:06
df = DateFormat.getDateInstance(DateFormat.FULL); // 指定風(fēng)格
date = df.format(d); // 2020年6月17日 星期三
// 自定義風(fēng)格
df = new SimpleDateFormat("yyyy--MM--dd");
date = df.format(d); // 2020--6--17
// 日期字符串轉(zhuǎn)成日期對象
String dt = "2020-06-17";
DateFormat df1 = DateFormat.getDateInstance();
Date dd = df1.parse(dt); // throws ParseException
}
兩個日期間隔幾天:
package Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) throws ParseException {
String d1 = "2020-06-09";
String d2 = "2020-06-11";
System.out.println(test(d1,d2));
}
private static int test(String d1, String d2) throws ParseException {
DateFormat dateFormat = DateFormat.getDateInstance();
dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date dd1 = dateFormat.parse(d1);
Date dd2 = dateFormat.parse(d2);
long ddd1 = dd1.getTime();
long ddd2 = dd2.getTime();
return (int) (Math.abs(ddd1 - ddd2) / 1000/ 60 / 60 / 24);
}
}
Calendar類
所屬包:java.util.Calendar
- GregorianCalendar
public static void main(String[] args){
// 獲取日歷的實例
Calendar c = Calendar.getInstance();
// 獲取年份
int year = c.get(Calendar.YEAR);
// 獲取月份 + 1 月份從0開始
int month = c.get(Calendar.MONTH) + 1;
// 獲取一個月中的第幾天
int day = c.get(Calendar.DAY_OF_MONTH);
// 獲取一周中的第幾天 周日是0開始
int week = c.get(Calendar.DAY_OF_WEEK);
System.out.println(year + ":" + month + ":" + day);
// 設(shè)置指定時間
c.set(2020, 5, 20);
// 日期的偏移
c.add(Calendar.YEAR, 2); // 增加兩年 2020 -->> 2022年
c.add(Calendar.YEAR, -2); // 倒退兩年 2022 -->> 2020年
}
任意一年的二月份有多少天
public static void main(String[] args){
showSecondMonthDays(2020);
}
public static int showSecondMonthDays(int year){
Calendar c = Calendar.getInstance();
c.set(year, 2, 1); // 2代表3月
c.add(Calendar.DAY_OF_MONTH, -1); // 3月1號倒退一天
}