Java第二十天學習筆記~其他物件API(System類、Runtime類、Math類、Date類、Calendar類)、IO流
阿新 • • 發佈:2018-12-27
System類
類中的方法和屬性都是靜態的
常見方法:Long currentTimeMillis( );獲取當前時間毫秒值
Properties prop=System.getProperties( );獲取系統的屬性資訊,並存儲到Properties集合中
Runtime類
使應用程式與其執行的環境相連
應用程式不能建立自己的Runtime
Runtime:沒有構造方法摘要,說明該類不可建立物件
又發現還有非靜態方法,說明該類應該是提供靜態的返回該類物件的方法,而且只有一個,說明Runtime類使用了單例設計模式
Runtime getRuntime(); 獲取Runtime類的物件 Process exec(String command); 執行命令 execute destroy(); 殺掉子程序
Math類
提供了運算元學運算的方法,都是靜態的
ceil();返回大於引數的最小整數
floor();返回小於引數的最大整數
round();返回四捨五入的整數
pow(a,b,);a的b次方
random();隨機數,大於0小於1
Random類是用於生成偽隨機數的
Date類
時間和日期的物件
日期物件和毫秒值之間的轉換 毫秒值->日期物件 1.通過Date物件的構造方法 new Date(Millis); 2.通過Date 中的setTime(Millis)方法設定 日期物件->毫秒值 getTime方法 因為可以通過具體的數值進行運算 對日期物件進行格式化 日期物件->日期物件的字串 使用的是DateFormate類中的formate方法 先獲取日期格式化物件,然後將date作為引數物件傳入formate函式,轉為日期物件的字串型別 DateFormate是抽象類不能建立子類,所以使用getInstance方法獲取物件 日期格式的字串->日期物件 使用的是DateFormate類中的parse方法 SimpleDateFormat類可以對日期時間物件自定義格式
Calendar類
c.add(Calendar.Year,2 );向右偏移2年 +2年
package cn.itcast.p1.otherapi.test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; //練習1: //* "2012-3-17"到"2012-4-6" //* 中間有多少天。 /* * 1.首先把兩個時間字串轉為時間物件。 * 2.將時間物件轉為毫秒值。 * 3.兩個毫秒值進行相減,得到兩個毫秒值之差。 * 4.將毫秒值變為天數。 * * */ public class DateTest { public static void main(String[] args){ String str_date1 = "2012-3-17"; String str_date2 = "2012-4-6"; int day = getDay(str_date1,str_date2); System.out.println(day); } public static int getDay(String str_date1, String str_date2) { //1.將時間字串轉為時間物件。 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { Date date1 = dateFormat.parse(str_date1); Date date2 = dateFormat.parse(str_date2); //將時間物件轉為毫秒值; long time1 = date1.getTime(); long time2 = date2.getTime(); //得到毫秒值之差 long time = Math.abs(time2-time1); //轉為天數。 int day = transferDay(time); return day; } catch (ParseException e) { e.printStackTrace(); } return -1; } private static int transferDay(long time) { return (int)(time/1000/60/60/24); } }
add(int field, int amount);
根據日曆的規則,為給定的日曆欄位新增或者減去指定的時間量
get(int field);
返回給定日曆的欄位值
set();
設定年月日時間等
它也是抽象類,要用getInstance方法獲取物件
package cn.itcast.p1.otherapi.test;
import java.util.Calendar;
/*
練習2;
得到每個月有多少天
*/
public class DateTest2 {
public static void main(String[] agrs){
//建立對欄位操作的物件
Calendar cal = Calendar.getInstance();
int day = getDayOfMonth(2013,1);
// method(cal);
System.out.println(day);
}
//對時間欄位進行的操作,主要是輸出年月日和星期。
private static void method(Calendar cal) {
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH)+1;
int day = cal.get(Calendar.DAY_OF_MONTH);
String week = getWeek(cal.get(Calendar.DAY_OF_WEEK));
System.out.println(year+"年"+month+"月"+day+"日"+week);
}
private static String getWeek(int i) {
String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六",};
return weeks[i];
}
//得到某一月的天數,
public static int getDayOfMonth(int year,int month) {
Calendar cal = Calendar.getInstance();
cal.set(year,month,1);
cal.add(Calendar.DAY_OF_MONTH,-1);
method(cal);
return cal.get(Calendar.DAY_OF_MONTH);
}
}
IO流
1.輸入輸出流,是相對於裝置而言的;簡寫模式為IO流
將外設中的資料讀入記憶體中:輸入,讀
將記憶體中的數學寫入外設中:輸出,寫
按操作的資料分為位元組流和字元流
位元組流的兩個頂層父類:InputStream,OutputStream
字元流的兩個頂層父類:Reader輸入,Writer輸出
這些體系的子類都以父類名作為字尾
字首名就是該物件的功能
2.字元流
其實就是:位元組流讀取文字位元組資料後,不直接操作而是先查指定的編碼表,獲取對應的文字。再對文字進行操作,簡單的來說就是:位元組流+編碼表=字元流。
package cn.itcast.p2.io.filewriter;
import java.io.FileWriter;
import java.io.IOException;
/*需求1:將一些文字儲存到硬碟的一個檔案中。
如果要操作文字資料,優先考慮字元流。
*/
public class FileWriterDemo {
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
public static void main(String[] args) throws IOException {
//建立一個可以往檔案中寫入字元資料的輸出流物件。
/*
* 既然是往一個檔案中寫入文字資料,那麼在建立物件時,就必須明確該檔案(用於儲存資料的目的地).
*
* 如果檔案不存在則會自己建立,如果檔案存在則會覆蓋。
*
* 如果建構函式中加入true,可以實現對檔案的續寫。
* */
FileWriter fw = new FileWriter("demo.txt",true);
/*
* 呼叫Writer中的write(String)方法,寫入資料。
*
* 其實資料寫到了臨時儲存緩衝區中。
*
* */
fw.write(LINE_SEPARATOR+"abcdef"+"ajksjaksaksa");
/*
* 進行重新整理,將資料直接寫到目的地。
* */
// fw.flush();
/*
* 關閉流,關閉資源。
*在關閉前,會呼叫flush重新整理緩衝區的資料到目的地。
* */
fw.close();
// fw.write("haha");//關閉流後不能寫入,否則丟擲java.io.IOException
}
}