System
System 類中的方法和屬性都是靜態的。
描述系統的一些信息。
獲取系統屬性信息:Properties
例:
Properties prop = System.getProperties();
/* 因爲Properties 是Hashtable的子類,也就是Map集合的子類對象
那麼可以通過map的方法取出該集合中的元素
Properties該集合中存儲都是字符串,沒有泛型定義。*/
for(Object obj : prop.keySet())
{
String value = (String)prop.get(obj);
System.out.println(obj+"::"+value);
}
//獲取指定屬性信息。
String value = System.getProperty("os.name");
System.out.println(value);
//在系統中自定義一些特有信息
System.setProperty("mykey","myvalue12345");
System.out.println(System.getProperty("mykey"));
//在jvm啓動時,動態加載一些屬性信息
String v = System.getProperty("haha");
Runtime
每個 Java 應用程序都有一個 Runtime 類實例,使應用程序能夠與其運行的環境相連接。可以通過 getRuntime 方法獲取當前運行時。
該類並沒有提供構造函數。
說明不可以new 對象,那麼會直接想到該 類中的方法都是靜態的。
但發現該類中還有非靜態方法。說明該類肯定會提供了方法獲取本類對象。
該方法是靜態的,並返回值類型是本類類型。
該方式是:static Runtime getRuntime();
例:
Runtime r = Runtime.getRuntime();
//執行指定的字符串命令
Process p = r.exec("C:\\Program Files\\PDF閱讀器.EXE");
Thread.sleep(5000); //讓程序執行一會
p.destroy();//關掉子進程
Math
Math 類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函數
如果想格式化數字等,使用DecimalFormat 很方便。
例:
給定一個小數,保留該小數的後兩位。
方法一:
思路:我是這麼想的. 1,先乘100 2,取整 3,除100
public static double method(double d)
{
double d2 = d*100;
int i = (int)d2;
double d3 =((double)i)/100;
return d3;
}
方法二:
使用DecimalFormat轉換
DecimalFormat df = new DecimalFormat("#.00"); //以指定格式創建
System.out.println(df.format(f));
方法三:
使用String.format
System.out.println(String.format("%.2f", f));
DecimalFormat
如果想對數轉成各種格式,那麼使用該類,很方便。
如:把2123123.32232 轉成2,123,123.32 等 使用 applyPattern("#,#00.00")
DecimalFormat 是 NumberFormat 的一個具體子類,用於格式化十進制數字。能夠解析和格式化任何格式的數字。
可直接使用 applyPattern() 或間接使用 API 方法來設置模式。
Date
對於時間的處理。
但是Date功能好多無法使用使用
DateFormat :是日期/時間格式化子類的抽象類。
Calendar :是一個抽象類,分開操作年,月等比較方便。
TimeZone :表示時區偏移量,也可以計算夏令時。
而DateFormat是抽象類,使用其子類SimpleDateFormat 來對時間進行格式化。
例:
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E HH:mm:ss ");
//調用format 方法格式化爲指定的Date對象
String time = sdf.format(d);
System.out.println(time);
例二:
如果我們想對年進行加減等,那麼使用Calendar 比較方便
因爲:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年");
String time = sdf.format(d); //返回的是String類型如果想要加一年減一年就不方便
如:
Calendar c = Calendar.getInstance();
c.set(2015,7,14);
c.get(Calendar.YEAR); //獲取年
Executors
此類可以實現線程池的產生,定時執行線程等功能。(從1.5開始)
例:讓程序每隔 5S 產生一個隨數
//產生一個線程池,池中所保存的線程數爲 1
ScheduledExecutorService time = Executors.newScheduledThreadPool(1);
time.scheduleAtFixedRate(
new Runnable(){ //產生一個匿名線程
public void run() {
System.out.println(new Random().nextInt(10)+1); //隨機產生一個1-10的數
}
},
2, //2S後去執行這個線程
2, //每隔 2+2*x 後執行一次
TimeUnit.SECONDS);
AnnotatedElement
表示目前正在此 VM 中運行的程序的一個已註釋元素。該接口允許反射性地讀取註釋。由此接口中的方法返回的所有註釋都是不可變並且可序列化的。調用者可以修改已賦值數組枚舉成員的訪問器返回的數組;這不會對其他調用者返回的數組產生任何影響。
Annotation[] getAnnotations()
返回此元素上存在的所有註釋。(如果此元素沒有註釋,則返回長度爲零的數組。)
Annotation[] getDeclaredAnnotations()
返回直接存在於此元素上的所有註釋。與此接口中的其他方法不同,該方法將忽略繼承的註釋。(如
果沒有註釋直接存在於此元素上,則返回長度爲零的一個數組。)