《寫給大忙人看的Java SE 8》——Java8新特性總結(jié)(二)

新的日期和時間 API

Java8 引入了一個新的日期和時間API,位于java.time包下列另。
新的日期和時間API借鑒了Joda Time庫芽腾,其作者也為同一人,但它們并不是完全一樣的页衙,做了很多改進(jìn)摊滔。
下面來說一下幾個常用的類。首先是Instant店乐,一個Instant對象表示時間軸上的一個點卜朗。Instant.now()會返回當(dāng)前的瞬時點(格林威治時間)蟀伸。Instant.MIN和Instant.MAX分別為十億年前和十億年后。
如下代碼可以計算某算法的運行時間:

Instant start = Instant.now();
runAlgorithm();
Instant end = Instant.now();
Duration timeElapsed = Duration.between(start, end);
long millis = timeElapsed.toMillis();

Duration對象表示兩個瞬時點間的時間量】殴埽可以通過不同的方法甸陌,換算成各種時間單位湘捎。
上面所說的絕對時間并不能應(yīng)用到生活中去钟沛,所以新的Java API中提供了兩種人類時間,本地日期/時間帶時區(qū)的時間伏穆。
LocalDate是一個帶有年份拘泞、月份和天數(shù)的日期。創(chuàng)建他可以使用靜態(tài)方法now或者of枕扫。

LocalDate today = LocalDate.now();
LocalDate myBirthday = LocalDate.of(1994, 03, 15);
// use Enum
myBirthday = LocalDate.of(1994, Month.MARCH, 15);

System.out.println(today); // 2017-10-23
System.out.println(myBirthday); // 1994-03-15

下面是LocalDate中的一些常用方法:

image

LocalTime表示一天中的某個時間陪腌,同樣可以使用now或者of來創(chuàng)建實例。

LocalTime rightNow = LocalTime.now();
LocalTime bedTime = LocalTime.of(2, 0);
System.out.println(rightNow); // 01:26:17.139
System.out.println(bedTime); // 02:00

LocalDateTime 表示
一個日期和時間,用法和上面類似诗鸭。上面幾種日期時間類都屬于本地時間染簇,下面來說一下帶時區(qū)的時間。 ZonedDateTime 通過設(shè)置時區(qū)的id來創(chuàng)建一個帶時區(qū)的時間强岸。

ZonedDateTime beijingOlympicOpenning = ZonedDateTime.of(2008, 8, 8, 20, 0, 0, 0, ZoneId.of("Asia/Shanghai"));
System.out.println(beijingOlympicOpenning); // 2008-08-08T20:00+08:00[Asia/Shanghai]

更新后的API同樣加入了新的格式化類DateTimeFormatter锻弓。DateTimeFormatter提供了三種格式化方法來打印日期/時間:

  • 預(yù)定義的標(biāo)準(zhǔn)格式
String formattered = DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(beijingOlympicOpenning);
System.out.println(formattered); // 2008-08-08T20:00:00

DateTimeFormatter類提供了多種預(yù)定義的標(biāo)準(zhǔn)格式可供使用。

image
  • 語言環(huán)境相關(guān)的格式

標(biāo)準(zhǔn)格式主要用于機器可讀的時間戳蝌箍。為了讓人能夠讀懂日期和時間青灼,你需要使用語言環(huán)境相關(guān)的格式。
Java8提供了4種風(fēng)格妓盲,SHORT杂拨、MEDIUM、LONG悯衬、FULL弹沽。

String formattered = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).format(beijingOlympicOpenning);
System.out.println(formattered);    //2008年8月8日 星期五 下午08時00分00秒 CST
  • 自定義的格式
    或者你也可以自定義日期和時間的格式。
String formattered = DateTimeFormatter.ofPattern("E yyyy-MM-dd HH:mm").format(beijingOlympicOpenning);
System.out.println(formattered); // 星期五 2008-08-08 20:00

下圖中為一些常用的模式元素甚亭。

image

新的API提供了從字符串解析出日期/時間的parse靜態(tài)方法和與遺留類(java.util.Date贷币、java.sql.Time和java.txt.DateFormat等)互相轉(zhuǎn)換的方法。

雜項改進(jìn)

Java8在String類中只添加了一個新方法亏狰,就是join,該方法實現(xiàn)了字符串的拼接偶摔,可以把它看作split方法的逆操作暇唾。

String joined = String.join(".", "www", "cnblogs", "com");
System.out.println(joined); // www.cnblogs.com

數(shù)字包裝類提供了BYTES靜態(tài)方法,以byte為單位返回長度辰斋。
所有八種包裝類都提供了靜態(tài)的hashCode方法策州。
Short、Integer宫仗、Long够挂、Float和Double這5種類型分別提供了了sum、max和min藕夫,用來在流操作中作為聚合函數(shù)使用孽糖。
集合類和接口中添加的方法:

image

Java8為使用流讀取文件行及訪問目錄項提供了一些簡便的方法(Files.linesFiles.list)。同時也提供了進(jìn)行Base64編碼/解碼的方法毅贮。
Java8對GUI編程(JavaFX)办悟、并發(fā)等方面也做了改進(jìn),本文沒有一一列出滩褥。

歡迎加入學(xué)習(xí)交流群569772982病蛉,大家一起學(xué)習(xí)交流。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市铺然,隨后出現(xiàn)的幾起案子俗孝,更是在濱河造成了極大的恐慌,老刑警劉巖魄健,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赋铝,死亡現(xiàn)場離奇詭異,居然都是意外死亡诀艰,警方通過查閱死者的電腦和手機柬甥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來其垄,“玉大人苛蒲,你說我怎么就攤上這事÷搪” “怎么了臂外?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長喇颁。 經(jīng)常有香客問我漏健,道長,這世上最難降的妖魔是什么橘霎? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任蔫浆,我火速辦了婚禮,結(jié)果婚禮上姐叁,老公的妹妹穿的比我還像新娘瓦盛。我一直安慰自己,他們只是感情好外潜,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布原环。 她就那樣靜靜地躺著,像睡著了一般处窥。 火紅的嫁衣襯著肌膚如雪嘱吗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天滔驾,我揣著相機與錄音谒麦,去河邊找鬼。 笑死嵌灰,一個胖子當(dāng)著我的面吹牛弄匕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沽瞭,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼迁匠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起城丧,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤延曙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后亡哄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枝缔,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年蚊惯,在試婚紗的時候發(fā)現(xiàn)自己被綠了愿卸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡截型,死狀恐怖趴荸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宦焦,我是刑警寧澤发钝,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站波闹,受9級特大地震影響酝豪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜精堕,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一孵淘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧歹篓,春花似錦夺英、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽余黎。三九已至重窟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惧财,已是汗流浹背巡扇。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垮衷,地道東北人厅翔。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像搀突,于是被迫代替她去往敵國和親刀闷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容