Java基礎(其他對象System、時間類(Date、Calendar)、Math)


System

一、概述

1System是描述系統一些信息的類,類中的屬性和方法都是靜態的。不能被實例化,沒有提供構造函數。

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、概述:

        1Calendar是一個抽象類,它爲特定瞬間與一組諸如YEARMONTHDAY_OF_MONTH等日曆字段之間的轉換提供了一些方法。

        2Calendar可以對年月日等時間進行獲取。並提供了相應的子段值。可參閱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);

       設置日曆字段 YEARMONTHDAY_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類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函數。該類全爲靜態方法。

 

二、方法

        1doubleceil(double d);//返回大於指定數據的最小整數

        2doublefloor(double d);//返回小於指定數據的最大整數

        3double pow(doublea,double b);//返回ab次方

        4long round(doubleb);//返回b四捨五入的值 

        5doublerandom();//返回正號的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;        //返回
    } 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章