<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:18px;">【基本定義】</span></span>
<span style="font-size:18px;">System:類中方法或者屬性都是靜态的,不能被執行個體化
out:标準輸出,預設是控制台
in:标準輸入,預設是鍵盤
【重點】描述系統的加載資訊:
1.擷取系統屬性資訊的方法 Properties getProperties();
2.如何在系統中定義一些特有的資訊呢?
3.擷取指定的資訊
4.怎樣在jvm使用時,加載一些自定義的資訊
【分析】
一、Properties(屬性):
1.其實就是Hashtable的子類,也就是map集合的子類,是以不涉及到泛型
2.可以通過map集合的方法取出該集合中的元素
3.改集合中存儲的全部是字元串
二、setProperty(String key, String value):
1.設定在系統加載時,自定義的鍵值和内容
三、String getProperty(key);
1.取得指定的鍵對應的value内容
四、用java -D(wangke)=(nanren) SystemDemo1 即可
其中wangke是自定義的key,nanren是自定義的value SystemDemo1是可執行的.class檔案名稱
*/
import java.util.*;
class SystemDemo1
{
public static void main(String[] args)
{
//【【1】得到系統在運作時加載的具體檔案内容】
System.setProperty("---keyneirong----","---valueneirong---");
Properties proper=System.getProperties();
//這其實也是周遊,相當于疊代一樣的
for (Object obj:proper.keySet())
{
String value=(String)proper.get(obj);
System.out.println(obj+":::"+value);
}
/*Set set=proper.keySet();
Iterator i=set.iterator();
while (i.hasNext())
{
String key=(String)i.next();
String value=(String)proper.get(key);
System.out.println(key+":::"+value);
}*/
//【【2】如何在系統中定義一些特有的資訊呢?】
//System.setProperty("keyneirong","valueneirong");
//【【3】取得指定的鍵對應的value内容】
String value=System.getProperty("os.name"); //例如這是擷取系統的版本資訊Windows XP
System.out.println(value);
//【4】怎樣在jvm使用時,加載一些自定義的資訊
//運作時輸入:java -D(wangke)=(nanren) SystemDemo1 即可OK
}
}
</span></span>
<span style="font-size:18px;"><span style="font-size:18px;">/*
Runtime:
每個 Java 應用程式都有一個 Runtime 類執行個體,使應用程式能夠與其運作的環境相連接配接。
可以通過 getRuntime 方法擷取目前運作時。
應用程式不能建立自己的 Runtime 類執行個體
【重點】
1.該類并沒有提供構造函數,是以不能建立執行個體(不能new)
2.可能該類中的方法全是靜态的,直接調用即可!
3.但是發現有非靜态的方法,那就說明該類中肯定提供了一個能擷取本類的方法
4.發現得知:隻能通過getRuntime方法來擷取到該Runtime
5.掌握常用的一個靜态方法static exec("");""裡為需要執行的内容,該方法傳回值是一個程序process
【特點】
該類使用了單例的設計模式來完成,確定對象的唯一性
能擷取該類對象的方法是:
static Runtime getRuntime();
*/
class RuntimeDemo2
{
public static void main(String[] args) throws Exception
{
//示範擷取本類對象的靜态方法
Runtime r=Runtime.getRuntime();
//打開了一個系統中的掃雷遊戲
//【注意】該靜态方法可能去執行不存在的檔案,這時候就會抛出一個IO異常,是以需要聲明
//r.exec("winmine.exe");
//傳回的是一個程序,可以用程序的方法去操作它,這裡是打開一個記事本SystemDemo1.java檔案
Process p=r.exec("notepad.exe SystemDemo1.java");
//等待6s後幹掉此程序
Thread.sleep(6000);
//殺死程序
p.destroy();
}
}
</span></span>
<span style="font-size:18px;"><span style="font-size:18px;">/*
Date類:
在java.util.*中,屬于工具類
該類主要是封裝了時間的一些内容在裡面
1.該類可以執行個體化,即是獲得目前系統的時間
2.按照自定義的時間格式輸出:要用到SimpleDateFormat類(自定義時間的規範化)在java.text.*;
3.以毫秒數得到目前的時間long System.currentTimeMillis(),再用date的帶參數構造方式建立
*/
import java.text.*;
import java.util.*;
class DateDemo3
{
public static void main(String[] args)
{
//獲得目前系統的時間
Date d=new Date();
//擷取的結果:Mon Mar 23 18:34:42 CST 2015
System.out.println(d);
//設定自定義的時間格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd hh:mm:ss E");
//用SimpleDateFormat的對象調用format方法,傳回一個字元串
String str=sdf.format(d);
System.out.println(str);
//用System類也能擷取到目前的時間
long l=System.currentTimeMillis();
Date d1=new Date(l);
System.out.println(d1);
}
}
</span></span>
<span style="font-size:18px;"><span style="font-size:18px;">/*
Calendar:
月曆類:
【重點】
1.
Calendar中月份和星期的擷取,
應該注意角标,月份0代表的是一月……
而星期中的擷取,1代表的是星期天
2.set方法:set(int field, int value)
set是給将給定的月曆字段設定為給定值。
3.add方法:add(int field, int amount) (時間的偏移量)
add是根據月曆的規則,為給定的月曆字段添加或減去指定的時間量。
*/
import java.util.*;
class CalendarDemo1
{
public static void main(String[] args)
{
//【1】自定義擷取年月日,星期的單例類
MyCalendar m=MyCalendar.getInstance();
sop(m.getYear());
sop(m.getMonth());
sop(m.getDay());
sop(m.getWeek());
//因為構造方法被私有化了,必須通過自己的靜态方法才能得到自己的執行個體對象
/*Calendar c=Calendar.getInstance();
//擷取年
int year=c.get(Calendar.YEAR);
//因為這裡的月曆類中的月份,0角标為其實是一月,
//即是得到月份是目前系統月份的前一個月,是以需要加1才行
int month=c.get(Calendar.MONTH);
//擷取天
int day=c.get(Calendar.DAY_OF_MONTH);
//擷取星期
int week=c.get(Calendar.DAY_OF_WEEK);
//分别輸出即可
sop(year+"年");
sop(month+"月");
sop(day+"日");
sop(week+"日"); //這裡擷取到是2,星期中排序是星期天……星期六,是以是星期一
*/
//【2】set方法
Calendar cd=Calendar.getInstance();
cd.set(Calendar.YEAR,2020);
sop(cd.get(Calendar.YEAR)); //2020
cd.set(2020,3,30); //【注意】這裡設定的3指的是四月份才對
sop(cd.get(Calendar.MONTH));
//【3】add方法:時間的偏移量
Calendar cd1=Calendar.getInstance();
int year=cd1.get(Calendar.YEAR);
sop(year); //2015
cd1.add(Calendar.YEAR,4);
int yearNew=cd1.get(Calendar.YEAR);
sop(yearNew); //2019
cd1.add(Calendar.YEAR,-4);
int yearNow=cd1.get(Calendar.YEAR);
sop(yearNow); //2015
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
//【從上面可以得出:擷取的月和星期都不是自己想要的結果:是以可以自己定義一個查表法】
//是以下面是自己寫的一個比較完美的單例模式擷取時間的自定義類
class MyCalendar
{
private MyCalendar()
{
}
private static MyCalendar mc=null;
//單例模式加鎖判斷方法
public static MyCalendar getInstance()
{
synchronized (MyCalendar.class)
{ if (mc==null)
{
if (mc==null)
{
mc=new MyCalendar();
}
}
return mc;
}
}
private String[] month={"","一月","二月","三月","四月",
"五月","六月","七月","八月",
"九月","十月","十一月","十二月"};
private String[] week={"","星期日","星期一","星期二",
"星期三","星期四","星期五","星期六"};
private Calendar c=Calendar.getInstance();
public String getYear()
{
//擷取年
return c.get(Calendar.YEAR)+"年";
}
public String getMonth()
{
//擷取月
int index=c.get(Calendar.MONTH);
//return month[index+1];這是擷取查表法的方法
return index+1+"月";
}
public String getDay()
{
//擷取日
return c.get(Calendar.DAY_OF_MONTH)+"日";
}
public String getWeek()
{
//擷取星期
int index = c.get(Calendar.DAY_OF_WEEK);
return week[index];
}
}
</span></span>
<span style="font-size:18px;"><span style="font-size:18px;">/*
練習
1.擷取任意年份二月份的天數
2.擷取昨天的現在這個時刻
【分析】
1.我們知道任意年份的二月天數都不一樣,是以最好是set(year,2,1);
其實這代表的是某年的3月1日,是以要得到二月的天數,隻需要把1 偏移-1位就可以得到了
其實就是set方法和add方法的應用!
2.
*/
import java.util.*;
class CalendarDemo2
{
public static void main(String[] args)
{
//【1】調用擷取2月份天數的方法
getFebDay(2000);
//【2】調用昨天這個時刻的方法
getYesterday();
}
//擷取某年的二月份天數的方法
public static void getFebDay(int year)
{
Calendar c=Calendar.getInstance();
c.set(year,2,1);
c.add(Calendar.DAY_OF_MONTH,-1);
int day=c.get(Calendar.DAY_OF_MONTH);
sop(year+"年的2月份共有"+day+"天");
}
public static void sop(Object obj)
{
System.out.println(obj);
}
//擷取昨天這個時刻的方法
public static void getYesterday()
{
Calendar c=Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH,-1);
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;
int day=c.get(Calendar.DAY_OF_MONTH);
int hour=c.get(Calendar.HOUR_OF_DAY);
int minute=c.get(Calendar.MINUTE);
int second=c.get(Calendar.SECOND);
sop("昨天的這個時刻是:"+year+"年"+month+"月"+day+"日"+hour+":"+minute+":"+second);
}
}
</span></span>
<span style="font-size:18px;"><span style="font-size:18px;">/*
在java.long.*;
Math 類包含用于執行基本數學運算的方法
其中有很多方法,但是比較常用的是一下幾種方法:
【重點】
1.static double E (常量) 含義:e(即自然對數的底數)的 double 值
2.static double PI (常量) 其實就是π
3.{double,float,int,long} abs(4中類型 d); 傳回d的絕對值,很簡單
[示範以下]【重點】
4.static double ceil(double a) :傳回大于a值的最大整數
5.static double floor(double a) : 傳回小于a值的最大整數
6.static long round(double a) :把a四舍五入,傳回為long
7.static double pow(double a, double b) :a的b次方,例如:pow(2,3);結果是8
8.static double random() :随機數,預設傳回的是{0<= 随機數 <1}
随機數的産生在java.util.*包中有一個直接可以用的類,那就是
Random類,其中有很多方法,不再一一介紹,知道幾個就行;
nextInt(int i):傳回0(包括)到i(不包括)值的随機整數;
以此類推:還有nextDouble()和nextFloat()等等……
9.有一個小練習:給定一個小數,保留該小數的後兩位!
*/
import java.util.*;
class MathDemo6
{
public static void main(String[] args)
{
double d=2342.676;
show(d);//示範
showTwo(d);//練習
}
public static void show(double d)
{
//傳回大于double類型值的最大整數
sop(Math.ceil(d)); //2343.0
sop(Math.ceil(-d)); //-2342.0
//傳回小于double類型值的最大整數
sop(Math.floor(d)); //2342.0
sop(Math.floor(-d)); //-2343.0
//把a四舍五入,傳回為long
sop(Math.round(d)); //2343
sop(Math.round(-d)); //-2343
sop(Math.round(23.29));//23
sop(Math.round(23.59));//24
//【注意】随機數:預設傳回的是{0<= 随機數 <1}
sop(Math.random()); //随機産生的,我這會兒是:0.33517799412879334
//例如以下是傳回十組0到1(其實就是包含:有頭無尾)的随機數字
for (int i=0; i<10;i++ )
{
sop(Math.random());
}
//那怎樣傳回1到10的随機數呢,需要有頭有尾,且是int類型!
for (int i=0; i<10;i++ )
{
sop((int)(Math.random()*10)+1); //加1主要是為了包含有尾
}
//java.uitl.*中的Random随機數類,可以直接操作的,有很多方法,不用強制轉換
//[重點]用Random類傳回十組0到1(其實就是包含:有頭無尾)的随機數字
Random r=new Random();
for (int i=0;i<10 ;i++ )
{
sop(r.nextInt(10));//要包含10就加一就OK了,這裡是有頭無尾式
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
/*9.有一個小練習:給定一個小數,保留該小數的後兩位!
【基本思路】:先把這個數字*100,然後在四舍五入這個數字強制傳回一個int類型,最後再
把這個數字除以100.00(主要是為了保留後兩位)傳回為double(内部會自動提升)類型即可
*/
public static void showTwo(double d)
{
double d1=d*100;
int d2=(int)Math.round(d1);
double a=d2/100.00;
sop(a); //2342.68
}
}
</span></span>
【總結】
以上這些都是比較常用的類,其中有重點的方法和注意的情況,我都寫在内容中,僅供大家參考學習……個人覺得最重要的是能通過運用這些工具類,能夠熟悉其java中API幫助文檔的使用!