Java基礎---> 其他對象(System、Runtime、時間類、Math)

第一  System類

一、概述:

1、System類是描述系統一些信息的類,不可以實例化,也無構造函數。

2、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> 可以設置特有的系統屬性信息

示例:

import java.util.Properties;

/*
 * system類中的方法都是靜態的,out是標準的輸出流,輸出到控制檯,in是標準的輸入流,獲取鍵盤的輸入
 * 
 * 獲取系統信息,Properties getProperties();
 */
public class SystemDemo {
	public static void main(String[] args) {
		Properties pro = System.getProperties();
		
		//設置屬性
		System.setProperty("wo", "my set property");
		
		//獲取指定屬性
		String value = System.getProperty("os.name");
		System.out.println("獲取指定屬性:" + value);
		
		//動態加載屬性信息,用到java的-D命令進行動態設定屬性信息
		
		
		//獲取全部信息,properties是hashtable的子類也就是map的子類,所以用map的取值方式進行取值
		for(Object obj : pro.keySet()){
			String str = (String) pro.get(obj);
			System.out.println(obj + "::" + str);
		}
	}
}

第二  Runtime類

一、概述:

1、每個java應用程序都有一個Runtime類實例,使應用程序能與其中運行的環境相連接,應用程序不能創建自己的Runtime類的實例,是由系統底層自己創建的。

2、該類並未提供構造函數:說明不可以new對象,那麼會直接想到該類中的方法都是靜態的。查閱API文檔發現,該類中還有非靜態方法,說明該類中肯定會提供方法獲取該類對象,並且該方法是靜態的,且返回值類型是該類類型。

3、由這個特點可以看出該類使用了單例設計模式。

二、方法:

1、獲取本類對象:

       static Runtime getRuntime();

2、在單獨的進程中執行指定字符串命令:

      Process exec(String command);

3、在Process中有一個殺掉子進程的方法,可將exec方法開啓的進程殺掉

      void destroy();

示例:

/*
 * Runtime並沒有提供構造函數,說明不可以創建對象,會直接想到該類中都是靜態方法
 * 但是發現其中有非靜態的方法
 * 說明該類肯定提供了方法獲取本類對象,而且該方法是靜態的,而且返回本類對象
 * 
 * 從特點看出本來使用了單利設計模式
 */
public class RuntimeDemo {
	public static void main(String[] args) {
		// 獲取本類對象
		Runtime runtime = Runtime.getRuntime();
		try {
			// 調用對象執行命令,返回一個進程
			Process p = runtime.exec("notepad.exe");
			try {
				Thread.sleep(5000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			// 殺掉子進程。
			p.destroy();

			// 通過程序打開文件
			runtime.exec("notepad.exe RuntimeDemo.java");

		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


第三  時間類

一、Date類

1、概述:類 Date 表示特定的瞬間,精確到毫秒。

2、轉換:因爲Date類獲取到當前時間並以美國方式顯示,所以並不是我們所需要的,也就是這樣我們需要用到SimpleDateFormat類爲其進行轉成我們想要的類型。SimpleDateFormat接收一個模式,用於格式化。

示例:

/*
 * 類 Date 表示特定的瞬間,精確到毫秒。
 */
public class DateDemo {
	public static void main(String[] args) {
		Date d = new Date();
		System.out.println(d);//打印的時間不是理想中的格式,所以需要對其進行轉化
		
		//將模型封裝在simpledateformat對象中,SimpleDateFormat接收一個模式,用於格式化
		SimpleDateFormat smf = new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss");
		//調用format方法讓模式格式化指定的date對象
		String time = smf.format(d);
		System.out.println(time);
		
		long l = System.currentTimeMillis();
		Date d1 = new Date(l);
		System.out.println(d1);
	}
}

1、概述:

Calendar是一個抽象類,它爲特定瞬間與一組諸如YEAR、MONTH、DAY_OF_MONTH等日曆字段之間的轉換提供了一些方法。Calendar可以對年月日等時間進行獲取。並提供了相應的子段值。可參閱API文檔。

2、方法:

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

8)爲給定的日曆字段添加或減去指定的時間值:   --->   void add(int field,int amount);

9)獲取指定的日曆字段對應的時間值:                  --->   int get(int field);

10)將給定日曆字段對應的時間值設置爲給定值:  --->   void set(int field,int value);  設置日曆字段 YEAR、MONTH和DAY_OF_MONTH的值: --->   void set(int year,int month,int date);

示例:

/*
 * 日期表示
 */
public class CalendarDemo {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		// System.out.println(calendar);//打印calendar對象中的全部信息
		//設置時間
//		calendar.set(2050,2,3);
		System.out.println("設置後的時間:" + calendar.get(Calendar.YEAR));
		
		//add 根據日曆的規則,爲給定的日曆字段添加或減去指定的時間量。
//		calendar.add(Calendar.MONTH, -10);
		System.out.println("改變後的時間:" + calendar.getTime());
		
		printCalendar(calendar);
	}

	public static void printCalendar(Calendar c) {
		// 設置月
		String[] month = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月",
				"九月", "十月", "十一月", "十二月" };
		// 設置月份
		int indexm = c.get(Calendar.MONTH);
		System.out.println(month[indexm]);

		// 設置星期
		String[] weeks = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", };
		// 獲取星期
		int indexw = c.get(Calendar.DAY_OF_WEEK);
		System.out.println(weeks[indexw]);

		// 獲取年
		System.out.println(c.get(Calendar.YEAR) + "年");
		// 月
		System.out.println(c.get(Calendar.MONTH) + 1 + "月");
		// 日子
		System.out.println(c.get(Calendar.DAY_OF_WEEK) + "日");

	}
}

練習:

/*
 * 獲取任意年的二月有多少天。
 * 
 * 思路:根據指定年設置一個時間就是 
 * c.set(year,2,1)//某一年的3月1日。
 * c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最後一天。
 */
public class CalendarTest {
	public static void main(String[] args) {
		getFebNum(2016);
	}
	
	public static void getFebNum(int year){
		Calendar c = Calendar.getInstance();
		System.out.println("時間:" + c.getTime());
		c.set(year,2,1);//某一年的3月1日。
		c.add(Calendar.DAY_OF_MONTH, -1);//3月1日,往前推一天,就是2月最後一天。
		System.out.println(c.get(Calendar.DAY_OF_MONTH));
	}
}

第四  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()    --->   返回0到1的隨機數,包含0不包含1

示例:

public class MathDemo {
	public static void main(String[] args) {
		method();
		randomNum();
		saveTwo(12.3456, 2, true);
	}

	/*
	 * 練習。給定一個小數。 保留該兩位小數。
	 */
	public static void saveTwo(double d, int scale, boolean isRound) {

		double base = Math.pow(10, scale);

		double num = isRound ? Math.round(d * base) / base : ((int) (d * base))
				/ base;

		System.out.println("num=" + num);

		/*
		 * double d1 = d*100; sop("d1="+d1); d1 = d1+0.5; double d2 = (int)d1;
		 * sop("d2="+d2); double d3 = d2/100; sop("d3="+d3);
		 */
	}

	/*
	 * math方法演示
	 */
	public static void method() {
		double d = Math.ceil(-16.23);// 返回大於指定數據的最小整數
		System.out.println("Math.ceil:" + d);
		double d1 = Math.floor(-12.99);// 返回小於給定數據的最大整數
		System.out.println("Math.floor:" + d1);
		long l = Math.round(-12.46);// 四捨五入
		System.out.println("Math.round:" + l);
		double d2 = Math.pow(2, 3);// 返回第一個參數的第二個參數次冪的值。
		System.out.println("Math.pow:" + d2);
	}

	/*
	 * 取隨機數
	 */
	public static void randomNum() {
		Random r = new Random();// 可以用math中的random方法,也可以使用Random類
		for (int x = 0; x < 10; x++) {
			// double d = Math.random();
			int d = r.nextInt(10) + 1;
			System.out.println(d);
		}
	}
}


發佈了41 篇原創文章 · 獲贊 12 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章