Date-Calcendar-DateFormat-System-Math

一.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));
}
}


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