Java入門教程五(數字和日期處理)

Java 提供了處理相關問題的類,包括 Math 類、Random 類、BigInteger 類、Date 類等。java

Math類

Math 類封裝了經常使用的數學運算,提供了基本的數學操做,如指數、對數、平方根和三角函數等。Math 類位於 java.lang 包數組

靜態常量

Math 類中包含 E 和 PI 兩個靜態常量,其中 E 用於記錄 e 的常量,而 PI 用於記錄圓周率的值。dom

System.out.println(Math.E);   //2.718281828459045
System.out.println(Math.PI);    //3.141592653589793

最大值、最小值和絕對值

static int abs(int a)   返回 a 的絕對值
static long abs(long a) 返回 a 的絕對值
static float abs(float a)   返回 a 的絕對值
static double abs(double a) 返回 a 的絕對值
static int max(int x,int y) 返回 x 和 y 中的最大值
static double max(double x,double y)    返回 x 和 y 中的最大值
static long max(long x,long y)  返回 x 和 y 中的最大值
static float max(float x,float y)   返回 x 和 y 中的最大值
static int min(int x,int y) 返回 x 和 y 中的最小值
static long min(long x,long y)  返回 x 和 y 中的最小值
static double min(double x,double y)    返回 x 和 y 中的最小值
static float min(float x,float y)   返回 x 和 y 中的最小值

求整運算

static double ceil(double a)    返回大於或等於 a 的最小整數
static double floor(double a)   返回小於或等於 a 的最大整數
static double rint(double a)    返回最接近 a 的整數值,若是有兩個一樣接近的整數,則結果取偶數
static int round(float a)   將參數加上 1/2 後返回與參數最近的整數
static long round(double a) 將參數加上 1/2 後返回與參數最近的整數,而後強制轉換爲長整型

三角函數運算

tatic double sin(double a)  返回角的三角正弦值,參數以孤度爲單位
static double cos(double a) 返回角的三角餘弦值,參數以孤度爲單位
static double asin(double a)    返回一個值的反正弦值,參數域在 [-1,1],值域在 [-PI/2,PI/2]
static double acos(double a)    返回一個值的反餘弦值,參數域在 [-1,1],值域在 [0.0,PI]
static double tan(double a) 返回角的三角正切值,參數以弧度爲單位
static double atan(double a)    返回一個值的反正切值,值域在 [-PI/2,PI/2]
static double toDegrees(double angrad)  將用孤度表示的角轉換爲近似相等的用角度表示的角
staticdouble toRadians(double angdeg)   將用角度表示的角轉換爲近似相等的用弧度表示的角

指數運算

static double exp(double a) 返回 e 的 a 次冪
static double pow(double a,double b)    返回以 a 爲底數,以 b 爲指數的冪值
static double sqrt(double a)    返回 a 的平方根
static double cbrt(double a)    返回 a 的立方根
static double log(double a) 返回 a 的天然對數,即 lna 的值
static double log10(double a)   返回以 10 爲底 a 的對數

生成隨機數

生成一個指定範圍以內的隨機數字有兩種方法:一種是調用 Math 類的 random() 方法,一種是使用 Random 類
Random 類提供了豐富的隨機數生成方法,能夠產生 boolean、int、long、float, byte 數組以及 double 類型的隨機數,這是它與 random() 方法最大的不一樣之處。random() 方法只能產生 double 類型的 0~1 的隨機數。
Random 類位於 java.util 包中,該類經常使用的有以下兩個構造方法。
Random():該構造方法使用一個和當前系統時間對應的數字做爲種子數,而後使用這個種子數構造 Random 對象。
Random(long seed):使用單個 long 類型的參數建立一個新的隨機數生成器。函數

oolean nextBoolean()    生成一個隨機的 boolean 值,生成 true 和 false 的值機率相等
double nextDouble() 生成一個隨機的 double 值,數值介於[0,1.0),含 0 而不包含 1.0
int nextlnt()   生成一個隨機的 int 值,該值介於 int 的區間,也就是 -231~231-1。若是
須要生成指定區間的 int 值,則須要進行必定的數學變換
int nextlnt(int n)  生成一個隨機的 int 值,該值介於 [0,n),包含 0 而不包含 n。若是想生成
指定區間的 int 值,也須要進行必定的數學變換
void setSeed(long seed) 從新設置 Random 對象中的種子數。設置完種子數之後的 Random 對象
和相同種子數使用 new 關鍵字建立出的 Random 對象相同
long nextLong() 返回一個隨機長整型數字
boolean nextBoolean()   返回一個隨機布爾型值
float nextFloat()   返回一個隨機浮點型數字
double nextDouble() 返回一個隨機雙精度值

數字格式化

使用 DedmalFormat 類對結果進行格式化處理。例如,將小數位統一成 2 位,不足 2 位的以 0 補齊。DecimalFormat 是 NumberFormat 的一個子類,用於格式化十進制數字。DecimalFormat 類包含一個模式和一組符號code

0   顯示數字,若是位數不夠則補 0
#   顯示數字,若是位數不夠不發生變化
.   小數分隔符
-   減號
,   組分隔符
E   分隔科學記數法中的尾數和小數
%   前綴或後綴,乘以 100 後做爲百分比顯示
?   乘以 1000 後做爲千進制貨幣符顯示。用貨幣符號代替。若是雙寫,用國際貨幣符號代替;
若是出如今一個模式中,用貨幣十進制分隔符代替十進制分隔符
float f = 5487.45697;
DecimalFormat df1=new DecimalFormat("0.0");
DecimalFormat df2=new DecimalFormat("#.#");
DecimalFormat df3=new DecimalFormat("000.000");
DecimalFormat df4=new DecimalFormat("###.###");
System.out.println("0.0 格式:"+df1.format(f));  //0.0 格式:5487.5
System.out.println("#.# 格式:"+df2.format(f));  //#.# 格式:5487.5
System.out.println("000.000 格式:"+df3.format(f)); //000.000 格式:5487.457
System.out.println("###.### 格式:"+df4.format(f)); //###.### 格式:5487.457

時間日期的處理

java.util.Date 類和 java.util.Calendar 類。其中,Date 類主要封裝了系統的日期和時間的信息,Calendar 類則會根據系統的日從來解釋 Date 對象orm

Date 類

Date 類表示系統特定的時間戳,能夠精確到毫秒。Date 對象表示時間的默認順序是星期、月、日、小時、分、秒、年。Date 類有以下兩個構造方法。
Date():此種形式表示分配 Date 對象並初始化此對象,以表示分配它的時間(精確到毫秒),使用該構造方法建立的對象能夠獲取本地的當前時間。
Date(long date):此種形式表示從 GMT 時間(格林尼治時間)1970 年 1 月 1 日 0 時 0 分 0 秒開始通過參數 date 指定的毫秒數。對象

Date date1=new Date();    //調用無參數構造函數
System.out.println(date1.toString());    //輸出:Wed May 18 21:24:40 CST 2016
Date date2=new Date(60000);    //調用含有一個long類型參數的構造函數
System.out.println(date2);    //輸出:Thu Jan 0108:01:00 CST 1970

Date 類提供了許多與日期和事件相關的方法事件

boolean after(Date when)    判斷此日期是否在指定日期以後
boolean before(Date when)   判斷此日期是否在指定日期以前
int compareTo(Date anotherDate) 比較兩個日期的順序
boolean equals(Object obj)  比較兩個日期的相等性
long getTime()  返回自 1970 年 1 月 1 日 00:00:00 GMT 以來,此 Date 對象表示的毫秒數
String toString()   把此 Date 對象轉換爲如下形式的 String: dow mon dd hh:mm:ss zzz yyyy。
其中 dow 是一週中的某一天(Sun、Mon、Tue、Wed、Thu、Fri 及 Sat)

Calendar 類

Calendar 類是一個抽象類,它爲特定瞬間與 YEAR、MONTH、DAY_OF—MONTH、HOUR 等日曆字段之間的轉換提供了一些方法,併爲操做日曆字段(如得到下星期的日期) 提供了一些方法建立 Calendar 對象不能使用 new 關鍵字,由於 Calendar 類是一個抽象類,可是它提供了一個 getInstance() 方法來得到 Calendar類的對象。getInstance() 方法返回一個 Calendar 對象,其日曆字段已由當前日期和時間初始化。ci

Calendar c=Calendar.getInstance();

建立了一個 Calendar 對象後,就能夠經過 Calendar 對象中的一些方法來處理日期、時間字符串

void add(int field, int amount) 根據日曆的規則,爲給定的日曆字段 field 添加或減去指定的時間量 amount
boolean after(Object when)  判斷此 Calendar 表示的時間是否在指定時間 when 以後,並返回判斷結果
boolean before(Object when) 判斷此 Calendar 表示的時間是否在指定時間 when 以前,並返回判斷結果
void clear()    清空 Calendar 中的日期時間值
int compareTo(Calendar anotherCalendar) 比較兩個 Calendar 對象表示的時間值(從格林威治時間 1970 年 01 月 01 日
00 時 00 分 00 秒至如今的毫秒偏移量),大則返回 1,小則返回 -1,相等返回 0
int get(int field)  返回指定日曆字段的值
int getActualMaximum(int field) 返回指定日曆字段可能擁有的最大值
int getActualMinimum(int field) 返回指定日曆字段可能擁有的最小值
int getFirstDayOfWeek() 獲取一星期的第一天。根據不一樣的國家地區,返回不一樣的值
static Calendar getInstance()   使用默認時區和語言壞境得到一個日曆
static Calendar getInstance(TimeZone zone)  使用指定時區和默認語言環境得到一個日曆
static Calendar getInstance(TimeZone zone,
Locale aLocale) 使用指定時區和語言環境得到一個日曆
Date getTime()  返回一個表示此 Calendar 時間值(從格林威治時間 1970 年 01 月 01 日 00 時
00 分 00 秒至如今的毫秒偏移量)的 Date 對象
long getTimeInMillis()  返回此 Calendar 的時間值,以毫秒爲單位
void set(int field, int value)  爲指定的日曆字段設置給定值
void set(int year, int month, int date) 設置日曆字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
void set(int year, int month, int date, int hourOfDay,
int minute, int second) 設置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、 MINUTE 和 SECOND 的值
void setFirstDayOfWeek(int value)   設置一星期的第一天是哪一天
void setTimeInMillis(long millis)   用給定的 long 值設置此 Calendar 的當前時間值

日期格式化

格式化日期表示將日期/時間格式轉換爲預先定義的日期/時間格式。例如將日期「Fri May 18 15:46:24 CST2016」 格式轉換爲 「2016-5-18 15:46:24 星期五」的格式。使用 DateFormat 類和 SimpleDateFormat 類來格式化日期

DateFormat 類

DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化並解析日期或時間。日期/時間格式化子類(如 SimpleDateFormat)容許進行格式化(也就是日期→文本)、解析(文本→日期)和標準化日期
在建立 DateFormat 對象時不能使用 new 關鍵字,而應該使用 DateFormat 類中的靜態方法 getDateInstance()

DateFormat df=DateFormat.getDatelnstance();

String format(Date date)    將 Date 格式化日期/時間字符串
Calendar getCalendar()  獲取與此日期/時間格式相關聯的日曆
static DateFormat getDateInstance() 獲取具備默認格式化風格和默認語言環境的日期格式
static DateFormat getDateInstance(int style)    獲取具備指定格式化風格和默認語言環境的日期格式
static DateFormat getDateInstance(int style,
Locale locale)  獲取具備指定格式化風格和指定語言環境的日期格式
static DateFormat getDateTimeInstance() 獲取具備默認格式化風格和默認語言環境的日期/時間
格式
static DateFormat getDateTimeInstance(int
dateStyle,int timeStyle)    獲取具備指定日期/時間格式化風格和默認語言環境的
日期/時間格式
static DateFormat getDateTimeInstance(int
dateStyle,int timeStyle,Locale locale)  獲取具備指定日期/時間格式化風格和指定語言環境的
日期/時間格式
static DateFormat getTimeInstance() 獲取具備默認格式化風格和默認語言環境的時間格式
static DateFormat getTimeInstance(int style)    獲取具備指定格式化風格和默認語言環境的時間格式
static DateFormat getTimeInstance(int style,
Locale locale)  獲取具備指定格式化風格和指定語言環境的時間格式
void setCalendar(Calendar newCalendar)  爲此格式設置日曆
Date parse(String source)   將給定的字符串解析成日期/時間

SimpleDateFormat 類

使用 DateFormat 類格式化日期/時間並不能知足要求,那麼就須要使用 DateFormat 類的子類——SimpleDateFormat
SimpleDateFormat 是一個以與語言環境有關的方式來格式化和解析日期的具體類,它容許進行格式化(日期→文本)、解析(文本→日期)和規範化。SimpleDateFormat 使得能夠選擇任何用戶定義的日期/時間格式的模式
SimpleDateFormat 類主要有以下 3 種構造方法

SimpleDateFormat():用默認的格式和默認的語言環境構造 SimpleDateFormat。
SimpleDateFormat(String pattern):用指定的格式和默認的語言環境構造 SimpleDateF ormat。
SimpleDateFormat(String pattern,Locale locale):用指定的格式和指定的語言環境構造 SimpleDateF ormat。
y   年份。通常用 yy 表示兩位年份,yyyy 表示 4 位年份  使用 yy 表示的年扮,如 11;
使用 yyyy 表示的年份,如 2011
M   月份。通常用 MM 表示月份,若是使用 MMM,則會
根據語言環境顯示不一樣語言的月份 使用 MM 表示的月份,如 05;
使用 MMM 表示月份,在 Locale.CHINA
語言環境下,如「十月」;在 Locale.US
語言環境下,如 Oct
d   月份中的天數。通常用 dd 表示天數  使用 dd 表示的天數,如 10
D   年份中的天數。表示當天是當年的第幾天, 用 D 表示  使用 D 表示的年份中的天數,如 295
E   星期幾。用 E 表示,會根據語言環境的不一樣, 顯示不
同語言的星期幾 使用 E 表示星期幾,在 Locale.CHINA 語
言環境下,如「星期四」;在 Locale.US 語
言環境下,如 Thu
H   一天中的小時數(0~23)。通常用 HH 表示小時數  使用 HH 表示的小時數,如 18
h   一天中的小時數(1~12)。通常使用hh表 示小時數  使用 hh 表示的小時數,如 10 (注意 10 有
多是 10 點,也多是 22 點)
m   分鐘數。通常使用 mm 表示分鐘數   使用 mm 表示的分鐘數,如 29
s   秒數。通常使用 ss 表示秒數 使用 ss 表示的秒數,如 38
S   毫秒數。通常使用 SSS 表示毫秒數  使用 SSS 表示的毫秒數,如 156
相關文章
相關標籤/搜索