System類
System類是描述系統一些信息的類,不可以實例化,也無構造函數。
System類中的方法和屬性都是靜態的。
in :標準輸入流,默認是鍵盤。
out:標準輸出流,默認是控制檯。
方法:1、獲取系統的屬性信息: Properties getProperties();
說明:
1)此方法返回的雙列集合,即鍵值對;因爲Properties是Hahstable的子類,也就是Map集合的一個子類對象,那麼通過Map方法取出該集合中的元素。
2)該集合存儲的都是字符串,沒有泛型定義
2、獲取指定屬性信息:
String System.getProperty(String key);
3、在系統內定義特有信息:
void System.setProperty(String key,String value);
4、如何在jvm啓動時,加載一些屬性信息:
通過命令:java -D<name>=<value> 可以設置特有的系統屬性信息
<span style="font-size:10px;"> ......
String s = getProperty("os.name");
System.out.println("os.name|:" + s);
System.setProperty("name----:","xixi");
System.out.println("-------------------------");
String v = System.getProperty("myName");
System.out.println("v = " + v);
Properties pop = System.getProperties();
for(Object obj : pop.keySet())
{
String value = (String)pop.get(obj);
out.println(obj + ":" + value);
}
......</span>
Runtime類
每個java應用程序都有一個Runtime類實例,使用應用程序能與其中運行的環境相連接,應用程序不能創建自己的Runtime類的實例,是由系統底層自己創建的。該類並未提供構造函數:說明不可以new對象,那麼會直接想到該類中的方法都是靜態的。查閱API文檔發現,該類中還有非靜態方法,說明該類中肯定會提供方法獲取該類對象,並且該方法是靜態的,且返回值類型是該類類型。可以看出該類使用了單例設計模式。
方法:
1、獲取本類對象:
static Runtime getRuntime();
2、在單獨的進程中執行指定字符串命令:
Process exec(String command);
3、在Process中有一個殺掉子進程的方法,可將exec方法開啓的進程殺掉
void destroy();
......
Runtime r = Runtime.getRuntime();
Process p = r.exec("winmine.exe");
//System.out.println(r);
Thread.sleep(6000);
p.destroy();
......
時間類
java中默認的格式如:Sun Jan 16 10:20:48 CST 2011
這樣的格式不一定滿足每個人的需求,那麼就需要自定義格式,需要格式化模式。具體步驟:
1)創建Date對象
2)將模式封裝到SimpleDateFormat對象中
3)調用format方法讓模式格式化指定Date對象
......
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss");
String time = sdf.format(d);
System.out.println("Time =" + time);
......
Calendar類
Calendar是一個抽象類,它爲特定瞬間與一組諸如YEAR、MONTH、DAY_OF_MONTH等日曆字段之間的轉換提供了一些方法。
Calendar可以對年月日等時間進行獲取。並提供了相應的子段值。
方法:
1、基本獲取時間:
1)獲取年份:Calendar.YEAR
2)獲取月份:Calendar.MONTH
3)獲取日期:Calendar.DAY_OF_MONTH
4)獲取星期:Calendar.DAY_OF_WEEK
5)獲取小時:Calendar.HOUR_OF_DAY
6)獲取分鐘:Calendar.MINUTE
7)獲取秒數:Calendar.SECOND
2、設置時間:
1)爲給定的日曆字段添加或減去指定的時間值: void add(int field,int amount);
2)獲取指定的日曆字段對應的時間值:int get(int field);
3)將給定日曆字段對應的時間值設置爲給定值:void set(int field,int value);
設置日曆字段 YEAR、MONTH和DAY_OF_MONTH的值: void set(int year,int month,int date);
練習
1、獲取任意年的二月有多少天:
2、獲取前一天的現在這個時刻
3、計算有效上課天數,每週六日不上課,計算任意年從九月到十月的有效上課天數
<span style="font-family:Arial;font-size:10px;">import java.util.*;
class CalendarTest
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
//測試1
int n = getFEB(2012);
sop("2012年2月的天數:" + n);
//測試2
String s = getTheTime();
sop("昨天的現在這個時刻是:" + s);
sop("-----------------");
//測試3
int m = getValDay(2013,1,3);
sop("有效上課天數:" + m);
}
//測試1:創建獲取二月的方法
public static int getFEB(int year)
{
Calendar c = Calendar.getInstance();
//設置任意年的時間爲3月1號
c.set(year,2,1);
//獲取設置後的3月1日,並減去1天,即爲二月最後一天
c.add(Calendar.DAY_OF_MONTH,-1);
//獲取最終設置的日期,即爲獲取到的二月的天數
int n = c.get(Calendar.DAY_OF_MONTH);
return n;
}
//測試2:獲取前一天的現在這個時刻
public static String getTheTime()
{
//獲取時間信息
Calendar c = Calendar.getInstance();
//將日期設置爲昨天
c.add(Calendar.DAY_OF_MONTH,-1);
//獲取昨天的現在這個時刻
int n = c.get(Calendar.DAY_OF_MONTH);
return n + "日 " + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND);
}
//測試3:計算有效上課天數
public static int getValDay(int year,int startMON,int endMON)
{
//獲取時間信息
Calendar c = Calendar.getInstance();
//調用獲取天數函數
int day = getDay(c,year,startMON,endMON);
sop("總天數:" + day);//測試獲取的天數
//初始化星期
int week = 0;
//定義計數器
int count = 0;
//遍歷每天一天,判斷是否爲週六日,f否的話計數器自增
for(int i=0;i<day;i++)
{
//必須要先將天數加1再判斷,否則到week爲6的時候會一直continue,
//而且此處也可以避免下面的week是以星期日爲第一天的問題
c.add(Calendar.DAY_OF_MONTH,1);
//獲取當前天數的星期
week = c.get(Calendar.DAY_OF_WEEK);
sop("星期:" + week);
if (week==6 || week==7)
continue;
count++;
sop("有效天數:" + count);
}
return count;
}
//獲取給定月份的天數
public static int getDay(Calendar c,int year,int startMON,int endMON)
{
//定義天數和變量
int sum = 0;
//遍歷每個月的天數
for(int i=0;i<=endMON-startMON;i++)
{
//設定第二個月的第一天,循環一次後設定下個月爲處世月,因爲0爲一月份所以startMON要加1
c.set(year,startMON+i,1);
//獲取前一個月的天數
c.add(Calendar.DAY_OF_MONTH,-1);
//將每個月的天數累加
sum += c.get(Calendar.DAY_OF_MONTH);
//循環後,要相應加上i個月
c.add(Calendar.MONTH,i+1);
}
return sum;
}
}
</span>
Math 類
Math類中全爲靜態方法,都是數學中的一些計算方法。
方法:
1、double ceil(double d)返回大於指定數據的最小整數
2、double floor(double d) 返回小於指定數據的最大整數
3、double pow(double a,double b) 返回a的b次方
4、double/float round(double/float m) 返回m四捨五入的值
5、double random() 返回正號的double值,是一個 0<=X<1.0 的隨機數X
Random類
這是一個java.util中的一個單獨的類,獲取隨機數。與Math中的random是一樣的,不過這個類有自身的方法,可以將相應的隨機數強轉爲指定基本數據類型。
<span style="font-size:10px;">import java.util.*;
class MathDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
double d = 0;
int n = 0;
//Math類測試
sop("-----------Math類測試-------------");
d = Math.ceil(15.66);
sop("ceil(15.66):" + d);
d = Math.floor(15.66);
sop("floor(15.66):" + d);
d = Math.pow(2,3);
sop("pow(2,3):2e3 = " + d);
d = Math.round(15.66);
sop("round(15.66):" + d);
d = Math.round(15.43);
sop("round(15.43):" + d);
for(int i=0;i<5;i++)
{
d = Math.random();
n = (int)(Math.random()*10+1);
sop("rondam():" + d + ",(int):" + n);
}
sop("-----------Random類測試-------------");
Random r = new Random();
for(int i=0;i<5;i++)
{
n = r.nextInt(10);
sop("Rondam():" + n);
}
}
}
</span>
練習
將某一小數保留爲指定位數的小數
class MathDemo
{
public static void main(String[] args)
{
double d = round(15.6745,1);
System.out.println("d = " + d);
}
//保留指定位數爲n的小數
public static double round(double d,int n)
{
//將給定數擴大n倍後四捨五入,再縮小相應的倍數
return Math.round(d*(Math.pow(10,n)))/(Math.pow(10,n));
}
}
詳細請查看: http://edu.csdn.net