System
一、概述
1、System是描述系統一些信息的類,類中的屬性和方法都是靜態的。不能被實例化,沒有提供構造函數。
2、字段摘要
out:標準輸出流。默認是控制檯。
in:標準輸入流。默認是鍵盤。
3、示例:
/* System:類中的方法和屬性都是靜態的。 out:標準輸出,默認是控制檯。 in:標準輸入,默認是鍵盤。 描述系統一些信息。 獲取系統屬性信息:Properties getProperties(); */ import java.util.*; class SystemDemo { public static void main(String[] args) { Properties prop = System.getProperties(); //因爲Properties是Hashtable的子類,也就是Map集合的一個子類對象。 //那麼可以通過map的方法取出該集合中的元素。 //該集合中存儲都是字符串。沒有泛型定義。 //獲取所有屬性信息。 for(Object obj : prop.keySet()) { String value = (String)prop.get(obj); System.out.println(obj+"::"+value); } /* //如何在系統中自定義一些特有信息呢? System.setProperty("mykey","myvalue"); //獲取指定屬性信息。 String value = System.getProperty("os.name"); System.out.println("value="+value); //可不可以在jvm啓動時,動態加載一些屬性信息呢? String v = System.getProperty("haha"); System.out.println("v="+v); */ } }
Runtime
一、概述
1、每個java應用程序都有一個Runtime類實例,使用應用程序能與其中運行的環境相連接,應用程序不能創建自己的Runtime類的實例,是由系統底層自己創建的。
2、該類中並沒有提供構造函數。說明不可以new對象。那麼會直接想到該類中的方法都是靜態的。查閱API文檔發現,該類中還有非靜態方法。說明該類肯定會提供了方法獲取本來對象。而且該方法是靜態的,並返回值類型是本來類型。
3、由以上特點可以看出該類使用了單例設計模式完成。
二、方法
1、獲取本類對象
static RuntimegetRuntime();
2、在單獨的進程中執行指定字符串命令
Processexec(String command);
3、在Process中有一個殺掉子進程的方法,可將exec方法開啓的進程結束
void destroy();
示例: class RuntimeDemo
{
public static void main(String[] args)throws Exception
{
Runtime r=Runtime.getRuntime();//獲取本類對象
//執行指定路徑下的可執行程序
Process p=r.exec("notepad.exe");//執行記事本程序
r.exec("notepad.exe RuntimeDemo.java");//用記事本打開指定文件
Thread.sleep(3000);//讓線程等待3秒
p.destroy();//殺掉指定進程
}
}
時間類
一、Date類
1、概述
Date類表示特定的瞬間,精確到毫秒。
java中的默認顯示格式爲:Mon Jun 10 22:35:21 CST2013
2、自定義格式
默認的格式不一定滿足每個人的需求,那麼就需要自定義格式化模式。因爲Date類中的大部分方法已過時,所以只能找其子類來實現。子類DateFormat中有format方法可以實現,但是DateFormat是抽象類,不能實例化。但是其下有個SimpleDateFormat子類,可以定義時間模式。
具體步驟:
1)創建Date對象
2)將時間模式封裝到SimpleDateFormat對象中
3)調用format方法讓格式化模式指定Date對象
代碼如下:
import java.util.*;
import java.text.*;
class DateDemo
{
public static void main(String[] args)
{
Date d=new Date();//創建Date對象
//sop(d);
//將模式封裝到SimpleDateformat對象中。
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日E HH:mm:ss");
//調用format方法讓模式格式化指定Date對象。
String time=sdf.format(d);
sop(time);
//獲取當前年份
getTime(new SimpleDateFormat("yyyy"),d);
//獲取當前月份
getTime(new SimpleDateFormat("MM"),d);
//獲取當前日期
getTime(new SimpleDateFormat("dd"),d);
//獲取當前星期
getTime(new SimpleDateFormat("E"),d);
//獲取當前小時
getTime(new SimpleDateFormat("HH"),d);
}
public static void getTime(SimpleDateFormat sd,Date d){
sop(sd.format(d));
}
public static void sop(Object ojb)
{
System.out.println(ojb);
}
}
二、Carendar類
1、概述:
1)Calendar是一個抽象類,它爲特定瞬間與一組諸如YEAR、MONTH、DAY_OF_MONTH等日曆字段之間的轉換提供了一些方法。
2)Calendar可以對年月日等時間進行獲取。並提供了相應的子段值。可參閱API文檔。
2、方法:
2.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.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);
示例:
import java.util.*;
class CalendarDemo
{
public static void main(String[] args)
{
//獲取一個日曆,裏面包含了年月日星期等等信息
Calendar c=Calendar.getInstance();
System.out.println(c);
sop(pattern(c));//顯示今天日期和當前時間
//指定年份進行偏移
c.add(Calendar.YEAR,3);//年份變爲3年後
sop(pattern(c));//顯示指定日期和時間
}
//獲取指定日期和時間
public static String pattern(Calendar c)
{
String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);
return s;
}
//獲取年份
public static int year(Calendar c)
{
return c.get(Calendar.YEAR);
}
//獲取月份
public static String month(Calendar c)
{
String[] yue={"一月","二月","三月","四月",
"五月","六月","七月","八月",
"九月","十月","十一月","十二月"};
return yue[c.get(Calendar.MONTH)];
}
//獲取日期
public static int day(Calendar c)
{
return c.get(Calendar.DAY_OF_MONTH);
}
//獲取星期
public static String week(Calendar c)
{
String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return day[c.get(Calendar.DAY_OF_WEEK)];
}
//獲取時間,格式爲時:分:秒
public static String time(Calendar c)
{
String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);
return s;
}
//打印輸出
public static void sop(Object obj)
{
System.out.println(obj);
}
}
小練習:
/*
練習
1、獲取任意年的二月有多少天:
思路:根據指定年設置一個時間就是
c.set(year,2,1)//某一年的3月1日。
c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最後一天。
2、獲取前一天的現在這個時刻
思路:c.add(Calenar.DAY_OF_MONTH,-1);
3、計算有效上課天數,每週六日不上課,計算任意年從九月到十月的有效上課天數
思路;
1、根據指定年設定一個時間就是c.set(year,8,1)//某一年的9月1日
2、定義一個計數器,判斷指定時間是否是星期六或者星期日,不是則計數加1
3、日期偏移量1天,直至判斷到這個月的最後一天
*/
import java.util.*;
class CalendarDemoTest
{
public static void main(String[] args)
{
//練習1測試
sop("2012年二月份有"+whatDay(2012)+"天");
//練習2測試
sop("昨天的現在這個時刻:"+lastNowTime());
//練習3測試
sop("2013年9月到10月上了"+howDay(2013)+"天課");
}
//練習1
public static int whatDay(int year)
{
Calendar c=Calendar.getInstance();
c.set(year,2,1);
c.add(Calendar.DAY_OF_MONTH,-1);
return c.get(Calendar.DAY_OF_MONTH);
}
//練習2
public static String lastNowTime()
{
Calendar c=Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH,-1);
return pattern(c);
}
//練習3
public static int howDay(int year)
{
Calendar c=Calendar.getInstance();
c.set(year,8,1);
int count=0;
for (int x=c.get(Calendar.DAY_OF_MONTH); x<=30;x++ )
{
if(c.get(Calendar.DAY_OF_WEEK)!=1&&c.get(Calendar.DAY_OF_WEEK)!=7)
count++;
c.add(Calendar.DAY_OF_MONTH,1);
}
return count;
}
//獲取指定日期和時間
public static String pattern(Calendar c)
{
String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);
return s;
}
//獲取年份
public static int year(Calendar c)
{
return c.get(Calendar.YEAR);
}
//獲取月份
public static String month(Calendar c)
{
String[] yue={"一月","二月","三月","四月",
"五月","六月","七月","八月",
"九月","十月","十一月","十二月"};
return yue[c.get(Calendar.MONTH)];
}
//獲取日期
public static int day(Calendar c)
{
return c.get(Calendar.DAY_OF_MONTH);
}
//獲取星期
public static String week(Calendar c)
{
String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return day[c.get(Calendar.DAY_OF_WEEK)];
}
//獲取時間,格式爲時:分:秒
public static String time(Calendar c)
{
String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);
return s;
}
//打印輸出
public static void sop(Object obj)
{
System.out.println(obj);
}
}
Math類
一、概述
Math類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函數。該類全爲靜態方法。
二、方法
1、doubleceil(double d);//返回大於指定數據的最小整數
2、doublefloor(double d);//返回小於指定數據的最大整數
3、double pow(doublea,double b);//返回a的b次方
4、long round(doubleb);//返回b四捨五入的值
5、doublerandom();//返回正號的double值,是一個大於等於0.0且小於1.0的隨機數
三、Random類
這是java.util中的一個單獨的類,該類對象用於獲取隨機數。與Math中的random方法是一樣的,不過這個類有自身的方法,可以將相應的隨機數強轉爲指定基本數據類型。
注:random() 得到的是0-1之間的數
random()*10+1 得到的是1-10之間的
如:intnextInt(int n);//返回一個僞隨機數,它是取自此隨機數生成器序列的、在 0(包括)和指定值(不包括)之間均勻分佈的 int值。
小練習:
class MathDemo
{
public static void main(String[] args)
{
System.out.println(get(12.120,3));
}
public static double get(double d,int n){ //定義要保留的小數的double數字和要保留的小數位
int pow =(int) Math.pow(10,n); //獲取保留小數的數要變成整數所需要乘以的倍數
int num =(int)Math.round(d*pow); //將保留小數的數變成整數
return (double)num/pow; //返回
}