Java其他API介紹,JavaAPI介紹
有一些類雖然不像集合、多線程、網路編程中的類那樣屬於Java中的核心類,但是它們在開發過程中給我們帶來很多便利,這裡就對它們做下簡要的介紹和示範。
一、System類
System類中的構造方法是私人的,System類中的屬性和方法都是靜態。
常用方法: long currentTimeMills():返回以毫秒值為單位的目前時間。
System 類包含一些有用的類欄位和方法。下面的示範就擷取了本地系統的資訊,並把它們列印出來。
1 package www.wsw.otherApi; 2 import java.util.Properties; 3 import java.util.Set; 4 5 public class SystemTest { 6 /** 7 * 跨平台的分隔字元,在什麼平台上運行,就調用那個平台的分行符號 8 * 另外。可以把系統的常用資訊定義成靜態欄位,方便使用。 9 */10 public static String line_speparator=System.getProperty("line.separator");11 12 public static void main(String[] args) {13 //常用方法: long currentTimeMills()14 long l1=System.currentTimeMillis();//返回以毫秒值為單位的目前時間15 System.out.println(l1);//149000571079216 demo_1();17 }18 19 public static void demo_1() {20 /**21 * 擷取系統資訊的鍵和值,並儲存到Properties集合中22 * Properties是HashTable的子類,它的鍵和值都是String類型的23 * 最好使用Properties自己的方法來完成元素的儲存和取出操作24 */25 Properties properties=System.getProperties();26 // Set<String> stringPropertyNames() 返回此屬性列表中的鍵集27 Set<String> nameSet=properties.stringPropertyNames();28 for(String name:nameSet){29 String value=properties.getProperty(name);30 System.out.println(name+"::"+value);31 }32 }33 34 }
二、 Runtime類
每個 Java 應用程式都有一個 Runtime 類執行個體,使應用程式能夠與其啟動並執行環境相串連。可以通過 getRuntime 方法擷取當前運行時。
應用程式不能建立自己的 Runtime 類執行個體。
有exec方法和destroy方法,參見示範。
1 package www.wsw.otherApi; 2 import java.io.IOException; 3 4 public class RuntimeDemo { 5 6 public static void main(String[] args) throws IOException, InterruptedException { 7 /** 8 * Runtime沒有構造方法摘要,說明該類不能夠建立對象, 9 * 又該類有非靜態方法,則Runtime類有能返回該類執行個體的靜態方法,10 * 發現這樣的方法只有一個,則Runtime類使用了單例設計模式11 */12 Runtime r=Runtime.getRuntime();13 //execute 執行 exe14 Process p=r.exec("notepad.exe D:\\abc\\MapDemo.java");//開啟記事本,並用它解析D盤目錄下的一個檔案15 //Process是一個抽象類別16 Thread.sleep(2000);17 p.destroy();//殺掉子進程18 19 }20 21 }
三、Math類
* Math類中都是做數學運算的靜態方法
* 常用方法:
* ceil():返回大於等於參數的最小整數
* floor():返回小於等於參數的最大整數
* round():返回參數四捨五入得到的整數
* pow(a,b):返回a的b次方
*
* random():返回[0,1)範圍內的偽隨機數
1 package www.wsw.otherApi; 2 3 public class MathDemo { 4 5 public static void main(String[] args) { 6 7 double d1=Math.ceil(-7.67);//-7.0 8 double d2=Math.floor(-7.67);//-8.0 9 double d3=Math.round(-7.67);//-8.010 sop("d1="+d1);11 sop("d2="+d2);12 sop("d3="+d3);13 14 sop(Math.pow(10,2)+"");//100.015 16 //擷取10個1-6之間的隨機數17 for (int i = 0; i < 10; i++) {18 //double d= (int)(Math.random()*6)+1;19 double d=Math.ceil(Math.random()*6);20 /**21 * 也可以寫為:22 * Random r=new Random();//Random位於Java.util包中,把隨機數封裝成了對象23 * 提供更多的方法24 * int d=r.nextInt(6)+1;25 */26 27 sop(d+"");28 }29 30 }31 //方便輸出32 public static void sop(String str) {33 System.out.println(str);34 }35 36 }
四、Date類和DateFormat類
Date類屬於java.util包,類 Date 表示特定的瞬間,精確到毫秒。
它允許把日期解釋為年、月、日、小時、分鐘和秒值。它也允許格式化和解析日期文字。不過,這些函數的 API 不易於實現國際化。
從 JDK 1.1 開始,應該使用 Calendar 類實現日期和時間欄位之間轉換,使用 DateFormat 類來格式化和解析日期文字。Date 中的相應方法已廢棄。
DateFormat 屬於java.text包,是日期/時間格式化子類的抽象類別,它以與語言無關的方式格式化並解析日期或時間。
把毫秒值轉化為Date對象
* 1.Date的構造方法
* 2.通過setTime方法
* 作用:可以使用Date類中的方法對Date對象的欄位(年月日等)進行操作
*
* 把Date對象轉化為毫秒值
* 1.getTime方法
* 作用:可以對毫秒值進行運算,算出時間差等
*
* 其他方法:
* boolean before(Date when):判斷此日期是否在指定日期之前
* boolean after():判斷此日期是否在指定日期之後
* boolean equals():判斷此日期和指定日期是否相等
* int compareTo():返回正負零
下面的示範中還涉及到兩個轉化,把日期文字轉為為Date對象和把Date對象轉化為按某種格式的日期文字,
分別使用了DateFormat類中的parse方法和format方法。
1 package www.wsw.otherApi; 2 3 import java.text.DateFormat; 4 import java.text.ParseException; 5 import java.text.SimpleDateFormat; 6 import java.util.Date; 7 8 public class DateDemo { 9 10 public static void main(String[] args) throws ParseException {11 12 methodDemo_3();13 }14 /**15 * 將日期文字-->日期對象16 * @throws ParseException 日期轉換異常17 */18 public static void methodDemo_3() throws ParseException {19 String str="2017--03--29";20 DateFormat dateFormat=new SimpleDateFormat("yyyy--MM--dd");21 /**22 * String str="2017年3月1日";23 * DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);24 */25 Date date=dateFormat.parse(str);26 System.out.println(date);//Wed Mar 29 00:00:00 CST 201727 28 }29 /**30 * 將日期對象進行格式化31 * 將日期對象-->日期格式的字串32 * 使用的是DateFormat中的format方法33 */34 public static void methodDemo_2() {35 Date date=new Date();36 //擷取日期格式器對象,並為預設的風格 可以指定Long full風格等37 DateFormat dateFormat1=DateFormat.getDateInstance(DateFormat.FULL);38 //擷取日期/時間格式器對象39 DateFormat dateFormat2=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);40 41 //如果,想要使用自訂的格式呢?42 DateFormat dateFormat3=new SimpleDateFormat("MM月~dd日--yyyy年");43 String str1=dateFormat1.format(date);44 String str2=dateFormat2.format(date);45 String str3=dateFormat3.format(date);46 System.out.println(str1);//2017年3月22日 星期三47 System.out.println(str2);//2017年3月22日 下午02時14分06秒48 System.out.println(str3);//03月~22日--2017年49 }50 51 public static void methodDemo_1() {52 long l=System.currentTimeMillis();53 Date d=new Date();//把目前時間封裝為Date對象54 Date d2=new Date(1490023019659l);//把毫秒值轉化為Date對象55 System.out.println(d);//Mon Mar 20 23:18:58 CST 201756 System.out.println(d2);//Mon Mar 20 23:16:59 CST 201757 }58 59 }
Date類練習:
練習:計算“2017年6月1日”和“2017年3月22日”之間相差多少天?
* 思路:
* 1.把日期文字轉化為Date對象
* 2.把Date對象轉化為相應的毫秒值,然後相減
* 3.把毫秒值轉化為天
1 package www.wsw.otherApi; 2 3 import java.text.DateFormat; 4 import java.text.ParseException; 5 import java.util.Date; 6 7 public class DateTest { 8 9 public static void main(String[] args) throws ParseException {10 int day=subDate("2017年5月1日","2017年3月22日");11 System.out.println(day);12 }13 14 public static int subDate(String str1, String str2) throws ParseException {15 DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);16 Date date1=dateFormat.parse(str1);17 Date date2=dateFormat.parse(str2);18 19 long time1=date1.getTime();20 long time2=date2.getTime();21 long time =time1-time2;22 int day=getDay(time);23 return day;24 }25 /**26 * 把毫秒值轉化為天數27 * @param time 毫秒值28 * @return 天數29 */30 public static int getDay(long time) {31 int day=(int) (time/1000/60/60/24);32 return day;33 }34 35 }View Code
五、Calendar類
Calendar 類是一個抽象類別,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日曆欄位之間的轉換提供了一些方法,
並為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。
1 package www.wsw.otherApi; 2 import java.util.Calendar; 3 4 public class CalendarDemo { 5 6 public static void main(String[] args) { 7 Calendar c=Calendar.getInstance(); 8 9 //使用Calendar類中的方法擷取某年的2月有多少天10 showDays(2016);//2016年2月29日星期一11 }12 13 public static void showDays(int year) {14 Calendar c=Calendar.getInstance();15 c.set(year, 2, 1);//把日期設定為某年的三月一號16 c.add(Calendar.DAY_OF_MONTH, -1);//把日期向前位移一天17 showDate(c);18 }19 20 //擷取日曆欄位,得到符合中國人習慣的日期顯示21 public static void showDate(Calendar c) {22 int year=c.get(Calendar.YEAR);23 int month=c.get(Calendar.MONTH)+1;//0代表1月24 int day=c.get(Calendar.DAY_OF_MONTH);25 int week=c.get(Calendar.DAY_OF_WEEK);//1代表星期天,7代表星期六26 27 System.out.println(year+"年"+month+"月"+day+"日"+getWeek(week));//2017年3月22日星期三28 }29 30 public static String getWeek(int week) {31 String[] weeks={"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};32 return weeks[week];33 }34 35 }