首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

《Java 程序設計》第 7 週學習總結:Lambda、時間日期 API 與實踐感悟

     編輯:Java 程式設計入門

教材學習內容總結

12.1 Lambda 語法核心

12.1.1 概覽

Java 引入 Lambda 時,與現有 API 保持兼容是首要考量。方法引用 在復用現有 API 中扮演關鍵角色,避免到處編寫 Lambda 表達式,使代碼更清晰。

12.1.2 Lambda 表達式與函數式接口

  • 無目標類型時需顯式聲明參數類型;有目標類型時編譯器可推斷類型。
  • Lambda 表達式本身無類型,同一表達式可對應不同目標類型。
  • JDK 8 未引入新類型,而是沿用 interface 定義函數式接口(單一抽象方法)作為目標類型。
  • @FunctionalInterface 標註非函數式接口會導致編譯錯誤。

12.1.3 Lambda 中的 this 與 final

  • Lambda 非匿名內部類語法糖。
  • Lambda 中的 this 指向外層作用域對象,而非 Lambda 實例。
  • 捕獲的局部變量若「實際最終」不變,可省略 final 關鍵字;但不可在 Lambda 中修改該變量值。

12.1.4 方法與構造函數引用

靜態方法、實例方法、構造函數均可作為函數式接口實現,前提是參數與返回值匹配。

12.1.5 接口默認方法

接口可定義 default 方法,實現類可選擇覆寫,便於 API 演進不破壞現有實現。

13.1 時間與日期基礎概念

概念說明
GMT格林威治標準時間,現不作為標準使用
UT世界時,1972 年前與 GMT 相同
TAI國際原子時,秒的定義基於銫原子輻射
UTC世界協調時間,含閏秒修正,與 UT 差 ≤ 0.9s
Unix Time自 1970-01-01 00:00:00 UTC 起的秒數,不含閏秒
Epoch時間軸起點

13.2 曆法簡介

  • 儒略曆:四年一閏,修正羅馬曆錯誤。
  • 格里高利曆:1582 年 10 月 4 日(週四)次日定為 10 月 15 日(週五),修正儒略曆積累誤差。
  • ISO 8601:統一格式 yyyy-MM-ddTHH:mm:ss.SSS。

13.3 時區與 JDK 8 新時間日期 API

舊 API 痛點

  • Date 僅代表機器時間點,易誤導為日期。
  • Calendar 可變、月份 0-based、線程不安全。

新 API 核心類

類用途
Instant機器時間點,納秒精度
LocalDate/LocalTime/LocalDateTime無時區的日期/時間/日期時間
ZonedDateTime/OffsetDateTime帶時區/偏移量的日期時間
Duration時間間隔(時分秒)
Period日期間隔(年月日)
DateTimeFormatter格式化/解析

關鍵操作

  • plus/minus(TemporalAmount)、plus/minus(long, TemporalUnit) 進行時間運算。
  • ChronoUnit 實現 TemporalUnit,支持 between() 計算差值。
  • 新舊轉換:Date.toInstant()、Instant.from(Date)。

學習感悟

近一個月學習讓我對 Java 產生濃厚興趣,期待與老師更多互動交流,深化理解。

學習進度記錄

週次代碼行數 (新增/累積)博客數 (新增/累積)學習時長 (新增/累積, 小時)重要成長
目標300030400-
第 1 週100/1002/220/20環境搭建、基礎語法
第 2 週100/2002/418/38面向對象核心
第 3 週300/5003/722/60集合框架、異常處理

參考資料

  • 《Java 學習筆記(第 8 版)》
  • 《Java 學習答記(第 8 版)》學習指導
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved