一.Date類(java.util)
作用:表示時間的類,精確到毫秒,以GMT 1970年1月1日0點0分0秒起算
構造方法:
Data() ---獲取當前時間
Date(long time)---計算時間,結果爲=time+GMT 1970年1月1日0點0分0秒
注:1s = 1000ms
成員方法:
getTime():返回long類型,返回自起始時間至設定時間的毫秒數;
setTime(long time):無返回值,使用給定的時間創建時間對象;
代碼1:
import java.util.Date; import java.text.DateFormat; public class DateDemo{ public static void main(String[] args){ //利用有參構造方法設定時間:從起始時間加1s Date date = new Date(1000); System.out.println(date); //8:00:01 //利用setTime設定時間:從起始時間加1s date.setTime(1000); //8:00:01 問題:爲什麼不是8:00:02? System.out.println(date); //利用getTime返回時間.返回值爲傳入的時間與起始時間差的毫秒數 long n = date.getTime(); System.out.println(n); } }
代碼2:
//需求:返回當前時間,並計算其與起始時間的差值(以毫秒爲單位) import java.util.Date; import java.text.DateFormat; public class DateDemo{ public static void main(String[] args){ //利用無參構造得到當前時間 Date date = new Date(); System.out.println(date); //利用getTime()方法返回與起始時間的差值 long n = date.getTime(); System.out.println(n); } }
二.DateFormat類(java.text)
簡介:抽象類,有4個靜態方法(不含重載),可由類直接調用.如果需要處理時間需創建子類(SimpleDateFormat)
作用:格式化並解析日期/時間.完成字符串與日期之間的轉換(日期-->文本,文本-->日期)
成員方法:
format(Date date):返回String類型,把日期轉換成字符串;
parse(String sourece):返回Date類型,字符串轉換爲日期;
靜態方法:
getAvailableLocable()
getDateInstance()
getDateTimeInstance()
getTimeInstance()
代碼1:
//format練習--需求:獲取系統當前時間,並以"年-月-日"的形式輸出 import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; public class TimeTest{ public static void main(String[] args){ //獲取當前時間 Date date = new Date(); //設定日期格式--字符串形式 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //將當前日期格式化爲設定的格式---字符串(日期-->字符串) String dateStr = df.format(date); //輸出 System.out.println(dateStr); } }
代碼2:
//parse練習--字符串轉爲日期 import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.text.ParseException; public class DateDemo{ public static void main(String[] args){ //定義日期(字符串形式):2017-09-09 12:38:45 String myDate = "2017-09-09 12:38:45"; //利用SimpleDateFormat構造方法,設定參數爲需要解析的格式 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //調用parse()方法解析字符串爲日期格式 Date date = null; //需捕獲ParseException異常,防止用戶輸入的與指定格式不符 try{ date = df.parse(myDate);//parse()返回date類型 }catch(ParseException pe){//捕獲異常時需要導包!!!! System.out.println("日期格式與指定格式不符!"); } System.out.println(date); } }
代碼3:
//利用parse和format將用戶輸入的字符串以'x年x月x日'的形式輸出 import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.text.ParseException; public class DateDemo{ public static void main(String[] args){ //定義日期(字符串形式):2017-09-09 12:38:45 String myDate = "2017-09-09 12:38:45"; //利用parse解析爲日期格式,參數爲需要解析的格式 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = null; try{ date = df.parse(myDate);//parse()返回date類型 }catch(ParseException pe){//捕獲異常時需要導包!!!! System.out.println("日期格式與指定格式不符!"); pe.printStackTrace(); } //轉換爲'xxx年xx月'的形式輸出 DateFormat df1 = new SimpleDateFormat("yyyy年MM月dd日"); String myDateCov = df1.format(date); System.out.println(myDateCov); /*思考:以上轉換方式爲:輸入的字符串---parse()爲系統標準日期格式---format()成所需要顯示的格式. 也許可以通過字符串的的替換操作(是不是可以用regex)來完成?*/ } }
三.Calendar類(java.util)
簡介:抽象類,含靜態方法,需使用子類對象處理日曆.可通過其中的靜態方法得到子類對象
定義:public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable<Calendar>{}
子類:GregorianCalendar
作用:
初始化:利用靜態方法創建對象 Calendar c = Calendar.getInstance();(返回當前時間,以java.util.GregorianCalendar開頭的一大串字符..)
常量(field):
public static final int YEAR :取得年
public static final int MONTH :取得月
public static final int DAY_OF_MONTH :取得日
public static final int HOUR_OF_DAY :取得小時
public static final int MINUTE : 取得分
public static final int SECOND :取得秒
public static final int MILLISECOND :取得毫秒
成員方法:
public static Calendar getInstace() : 根據默認時區實例化對象
public int get(int field):返回給定日曆字段的值
public abstract void add(int field, int amount):爲給定的日曆字段添加或減去指定的時間量
public date getTime():獲取該日曆對象轉成的日期對象
public void set(int field, int value):設置指定字段的值
代碼:
import java.util.Calendar; import java.util.Date; public class DateDemo{ public static void main(String[] args){ //實例化對象 Calendar rightNow = Calendar.getInstance(); //System.out.println(rightNow); //getTime()獲取日期 Date myDate = rightNow.getTime(); System.out.println(myDate); //get(int field)返回年份/月份 int year = rightNow.get(Calendar.YEAR); System.out.println(year); int mon = rightNow.get(Calendar.MONTH)+1;//注意:0-11表示12個月,所以需加1纔可返回真實月份 System.out.println(mon); //set()設定指定字段的值 rightNow.set(Calendar.YEAR,2010); System.out.println(rightNow.get(Calendar.YEAR)); rightNow.set(2012,02,02);//2012年3月2號 System.out.println(rightNow.getTime()); } }
四.System類(java.lang)
定義:public final class System extends Object{}; System類中所有的屬性和方法都是靜態的,可由類名直接調用
屬性: in out err
方法:
public static void exit(int status): 系統退出,0表示正常退出;非0爲非正常退出
public static long currentTimeMillis(): 返回以毫秒爲單位的當前時間
public static void arraycopy(Object src(源數組名稱), int srcPos(源數組開始點), Object dest(目標數組名稱), int destPos(目標數組開始點), int length):複製數組
public static Properties getProperties():取得當前系統的全部屬性
代碼:
//需求:複製數組arraycopy import java.util.Arrays; public class ArrayCopyDemo{ public static void main(String[] args){ int[] i = {3,4,78,23}; int[] i2 = {2,2,3,4,5}; System.arraycopy(i,1,i2,1,2); //注意目標數組的長度 for(int j = 0;j<i2.length;j++){ System.out.print(i2[j]+"\t"); } System.out.println("\n"+Arrays.toString(i2)); } }
//需求:取得系統屬性值並計算程序計算耗時
import java.util.Arrays; public class ProgramTime{ public static void main(String[] args){ //輸出系統全部屬性值 System.out.println(System.getProperties());//注意getProperties()複數形式獲取所有 //輸出java相關的系統屬性值 System.out.println(System.getProperty("java.version"));//getProperty()單數形式獲取指定鍵記錄的系統屬性 //記錄系統當前時間 long start = System.currentTimeMillis(); //運行程序 double[] i = new double[1000]; for(int k = 0; k<i.length;k++){ i[k]=Math.pow(2,k); //使用Math函數,需由Math調用 } System.out.println(Arrays.toString(i)); //記錄程序結束時系統時間 long end = System.currentTimeMillis(); //輸出程序運行的時間 System.out.println("耗時:"+(end-start)); } }
五.Math類(java.lang)
靜態方法:
abs():取絕對值,返回值類型由參數(int long double float)決定;
ceil(double a):向上取整,比參數大的最小整數,返回double類型;
floor(double a):向下取整,比參數小的最大整數,返回double類型;
floorDiv():地板除,對於商向下取整;返回值類型由參數(int long)決定;需捕獲AirthMeticException;java8新特性
floorMod():地板模,對於模向下取整;返回值類型由參數(int long)決定;需捕獲AirthMeticException;java8新特性(感覺跟%運算一樣,不曉得爲什麼增加這個功能);
max():比較兩個 double/float/int/long 類型,並返回最大值
min():比較兩個 double/float/int/long 類型,並返回最小值
pow(double a,double b):a的b次冪,返回double類型
random():得到0.0-1.0之間的隨機小數,不包含1.0,無參數,返回double類型;
round():四捨五入,參數爲double,返回long;參數爲float,返回int;
代碼:
import java.util.Random; public class MathDemo{ public static void main(String[] args){ //floorDiv()對於商向下取整,可傳入int/long兩種類型 int a = 3; int b =10; int c = Math.floorDiv(a,b); System.out.println(c);//0 //floor():向下取整,僅支持double類型 System.out.println(Math.floor(Math.floorDiv(3,10)));//0.0 //發生了隱式轉換Math.floorDiv(3,10)返回int類型 //floorMod()對於模數向下取整,可傳入int/long兩種類型 System.out.println(Math.floorMod(4,3));//1 System.out.println(4%3);//1 //max()/min()返回兩個數中較大/較小的, int long float double System.out.println(Math.max(3.0,5.3));//5.3 System.out.println(Math.min(3.0,5.3));//3.0 //pow(double a, double b)返回double類型 System.out.println(Math.pow(3.0,3.0));//27.0 //random()-產生0-1之間的隨機數,double類型的,不包含1 System.out.println(Math.random()); //利用java.util.Random類產生三個1-100(含100)的隨機數 Random r = new Random(); for(int j = 0; j<3; j++){ int i =r.nextInt(100)+1;//r.nextInt(100)產生0-99的數 System.out.print(i+"\t"); } //round():參數爲double,返回long;參數爲float,返回int System.out.println("\n====================="); System.out.println(Math.round(Math.random()*100)); } }
六.包裝類
1.字符串轉爲基本類型:
Boolen類:String-->boolean,利用Boolean類中的public static Boolen parseBoolean(String s)靜態方法
Byte類:public static Byte parseByte(String s)
Character類:無解析方法
Double類:public static Double parseDouble(String s)
Float類:public static Float parseFloat(String s)
Integer類:public static Integer parseInt(String s) 字符串轉爲數字時,字符串內容必須全爲數字,不能包含空格及其它
Long類:public static Long parseLong(String s)
Short類:public static Short parseShort(String s)
代碼:
//需求:將字符串轉爲各基本類型 public class StringDemo{ public static void main(String[] args){ //定義字符串"100",利用parseInt()解析爲int值 String str1 = "100"; try{ int in = Integer.parseInt(str1); System.out.println("字符串轉爲整型:"+in); System.out.println("字符串轉爲byte型:"+Byte.parseByte(str1)); }catch(NumberFormatException e) { System.out.println("數字格式有問題!"); e.printStackTrace(); } //定義字符串"3.14",利用parseDouble()解析爲double類型 String str2 = "3.14"; double dou = Double.parseDouble(str2);//do爲關鍵字!! System.out.println("字符串轉爲雙精度浮點型:"+dou); System.out.println("字符串轉爲單精度浮點型"+Float.parseFloat(str2)); //定義字符串"true",利用parseBoolean()轉爲布爾型 String str3 = "true"; System.out.println("字符串轉爲布爾型:"+Boolean.parseBoolean(str3)); } }