Java 基礎
什麼是 Java
Java 是一種由 Sun Microsystems 於 1995 年首次釋出的程式語言和計算平臺。Java 是一種通用的、基於類的、物件導向的程式語言,旨在減少實現依賴性。它是一個應用程式開發的計算平臺。Java 快速、安全、可靠,因此在膝上型電腦、資料中心、遊戲機、科學超級計算機、手機等領域廣泛應用。
基本概念
理解基礎知識是建立堅實基礎的關鍵。包括學習基本術語、命名約定、保留字、條件、函式、資料結構、物件導向程式設計(Oop)、包等。
例如
- 要列印輸出,使用 —>
System.Out.Println();
- 要從使用者獲取輸入,使用 —>
Scanner
或Bufferedreader
- 等等
資料型別和變數
在 Java 中,變數是在 Java 程式執行期間儲存資料值的資料容器。每個變數都被分配了一個資料型別,指定了它可以儲存的值的型別和數量。變數是資料的記憶體位置名稱。Java 變數主要有三種型別:區域性變數、例項變數和靜態變數。
參考文章:深入理解 Java 變數型別、宣告及應用
資料型別分為兩組
- 原始資料型別 -
Byte
、Short
、Int
、Long
、Float
、Double
、Boolean
和Char
- 非原始資料型別 -
String
、陣列和類
參考文章:Java 包裝類:原始資料型別與迭代器
條件語句
Java有以下條件語句:
- 使用
If
指定在指定條件為真時要執行的程式碼塊 - 使用
Else
指定在相同條件為假時要執行的程式碼塊 - 使用
Else If
指定要測試的新條件;如果第一個條件為假 - 使用
Switch
指定要執行的許多替代程式碼塊 - 使用
? :
運算子指定一行條件
參考文章:Java 數學運算與條件語句全解析
函式
方法/函式是執行某些任務的一種方式。同樣,在像 Java 這樣的程式語言中,函式方法是編寫用於重複執行特定任務的程式碼塊。它提供了程式碼的可重用性。我們編寫一次函式,然後多次使用它。它遵循 Dry
原則,即“不要重複自己”。
步驟
- 定義函式 -
資料型別 函式名稱(引數){主體}
- 呼叫函式 -
函式名稱(值)
參考文章
- 深入瞭解 Java 方法和引數的使用方法
- 深入理解 Java 方法過載與遞回應用
- 深入剖析 Java 類屬性與類方法的應用
- Java 建構函式與修飾符詳解:初始化物件與控制許可權
- Java 抽象類與方法:實現安全性與程式碼重用
迴圈
在 Java 和其他程式語言中,迴圈用於多次迭代程式的一部分。在 Java 中,有四種型別的迴圈,For
、Foreach
、While
和 Do...While
。
For
迴圈的語法是For(初始化;條件;增量/減量){}
Foreach
迴圈的語法是For(資料型別 變數:陣列名){}
參考文章:深入理解 Java 迴圈結構:While、Do While、For 和 For-Each 迴圈
異常處理
Java 中的異常處理是處理執行時錯誤的有效手段,以便保留應用程式的正常流程。Java 異常處理是處理執行時錯誤的機制,如 Classnotfoundexception
、Ioexception
、Sqlexception
、Remoteexception
等。
有三種型別的異常 -
- 已檢查異常 - 在編譯時檢查的異常。例如 -
Ioexception
- 未檢查異常 - 在執行時檢查的異常。例如 -
Nullpointerexception
- 錯誤 - 這是不可恢復的。例如 -
Outofmemoryerror
參考文章:Java 異常處理與正規表示式詳解,例項演練及最佳實踐
資料結構
正如名稱所示,資料結構是一種以記憶體中的方式組織資料的方法,以便可以有效地使用它。一些常見的資料結構包括陣列、連結串列、堆疊、雜湊表、佇列、樹、堆和圖。
- 陣列為同質資料分配連續記憶體
- 連結串列以節點形式儲存資料,並具有引用
- 堆疊遵循後進先出原則
- 佇列遵循先進先出原則
參考文章
- Java Arraylist 與 Linkedlist 的靈活選擇
- Java Hashmap 和 Hashset 的高效使用技巧
物件導向程式設計(Oop)
物件導向程式設計是 Java 程式設計的核心,用於使用類和物件設計程式。這也可以被描述為用於訪問程式碼的資料控制。
- 類
- 介面
- 物件
- 繼承
- 多型
- 抽象
- 封裝
參考文章
- 深入解析 Java 物件導向程式設計與類屬性應用
- Java 繼承與多型:程式碼重用與靈活性的巧妙結合
包
包是主要包含類和介面的名稱空間。例如,標準類 Arraylist
位於包 Java.Util
中。對於這個類,Java.Util.Arraylist
被稱為其完全限定名,因為這個語法沒有歧義。不同包中的類可以具有相同的名稱。例如,你有兩個類 Java.Util.Date
和 Java.Sql.Date
,它們是不同的。如果在類中沒有宣告包,它的包就是預設包。
要建立包,請使用此命令 -> Javac -D 目錄 Java檔名
參考文章:Java 包裝類:原始資料型別與迭代器
檔案和Api
學習如何處理檔案,即讀取、寫入和刪除檔案和資料夾等。還要學習如何進行Api呼叫、解析傳入的響應等。
Filewriter
- 此類用於透過寫入字元來建立檔案Filereader
- 此類用於以字元形式從檔案中讀取資料
參考文章:Java 檔案處理完全指南:建立、讀取、寫入和刪除檔案詳細解析
Java 高階主題
記憶體管理
在 Java 中,記憶體管理是物件的分配和釋放過程,稱為記憶體管理。
集合框架
Java 中的集合是一個提供儲存和操作物件組的架構。Java 集合可以執行所有你對資料執行的操作,如搜尋、排序、插入、操作和刪除。
序列化
序列化是將物件的狀態轉換為位元組流;反序列化則執行相反的操作。換句話說,序列化是將 Java 物件轉換為一串靜態的位元組流,我們可以將其儲存到資料庫或透過網路傳輸。
網路套接字
Java 網路是連線兩臺或更多計算裝置的概念,以便我們可以共享資源。Java 套接字程式設計提供了在不同計算裝置之間共享資料的功能。套接字是網路上執行的兩個程式之間雙向通訊鏈的一端。套接字繫結到埠號,以便 Tcp 層可以識別資料將要傳送到的應用程式。
泛型
Java 泛型方法和泛型類使程式設計師能夠使用單一方法宣告一組相關方法,或者使用單一類宣告一組相關型別。
流
Java 在 Java 8 中提供了一個新的附加包,稱為 Java.Util.Stream
。該包包含類、介面和列舉,允許對元素執行函式式風格的操作。你可以透過匯入 Java.Util.Stream
包來使用流。
Jvm 工作原理
Java 虛擬機器是一個用於執行其他程式的程式。Jvm 適用於許多硬體和軟體平臺(即,Jvm 是平臺相關的)。Jvm 實際上呼叫 Java 程式碼中存在的 Main
方法。Jvm 是 Jre(Java 執行時環境)的一部分。
垃圾回收
Java 垃圾回收是 Java 程式執行自動記憶體管理的過程。Java 程式編譯為位元組碼,可以在 Java 虛擬機器(Jvm)上執行。當 Java 程式在 Jvm 上執行時,物件被建立在堆上,這是專門為程式分配的一部分記憶體。
執行緒基礎
在 Java 中,執行緒是程式執行時所採取的方向或路徑。通常,所有程式至少有一個執行緒,稱為主執行緒,由 Jvm 或 Java 虛擬機器在程式執行開始時提供。
參考文章:深入理解 Java 多執行緒、Lambda 表示式及執行緒安全最佳實踐
構建工具
構建工具是一個程式或命令列實用程式,自動化軟體的編譯、組裝和部署過程。
構建工具不僅僅限於編譯程式碼;它們還可以幫助進行包管理、處理依賴關係以及支援持續整合系統。
Gradle
Gradle
是一個開源的構建自動化工具,幫助軟體工程師測試、構建和釋出高效能軟體產品。此外,Gradle 還支援多語言開發。目前,Gradle 支援的語言包括 Java、Kotlin、Groovy、Scala、C/C++ 和 Javascript。
Maven
Maven
是一個開源構建工具,主要用於 Java 專案。
Ant
Apache Ant
是一個 Java 庫和命令列工具,其任務是驅動在構建檔案中描述的過程,這些過程作為相互依賴的目標和擴充套件點。Ant 的主要用途是構建 Java 應用程式。Ant 提供了許多內建任務,允許編譯、組裝、測試和執行 Java 應用程式。Ant 也可以有效地用於構建非 Java 應用程式,例如 C 或 C++ 應用程式。更一般地說,Ant 可以用於驅動任何可以用目標和任務來描述的過程。
Web 框架
框架是帶有預寫程式碼的工具,充當模板或骨架,可以透過簡單地填入所需的程式碼來重用,從而使開發人員能夠在沒有從頭開始建立每一行程式碼的開銷的情況下編寫其應用程式。
Spring
Spring
是一個強大的開源 Java 平臺(框架),用於建立和維護 Web 應用程式。
Spring Boot
Spring Boot
是一個開源的、基於微服務的 Java Web 框架。Spring Boot
框架透過其程式碼庫中的預構建程式碼建立一個完全可配置的、完全準備好生產的環境。微服務架構為開發人員提供了一個完全封閉的應用程式,包括內嵌式應用程式伺服器。
參考文章:
- 《Spring 測試指南》:Jpa、Mockmvc 和 @Springboottest 詳解
- 瞭解 Spring Mvc 架構、Dispatcher Servlet 和 Jsp 檔案的關鍵作用
- 靈活配置 Spring 集合:List、Set、Map、Properties 詳解
- 深度解析 Spring Security:身份驗證、授權、Oauth2 和 Jwt 身份驗證的完整指南
- 深度剖析 Spring 框架在 Java 應用開發中的優勢與應用
- 深入瞭解 Spring Boot 核心特性、註解和 Bean 作用域
- 深入瞭解 Spring Cloud Config、Spring Cloud Gateway 與斷路器模式
- 深入理解 Spring Ioc 和 Di:掌握控制反轉和依賴注入的精髓
- 掌握 Spring Ioc 容器與 Bean 作用域:詳解 Singleton 與 Prototype 的使用與配置
- Spring 框架模組深度解析:核心容器、資料訪問、Web 層與其他關鍵模組
- Spring Boot 嵌入式伺服器、Hibernate 關係和 Spring Data 全解析
Play Framework
Play Framework
是一個高效率的 Web 應用程式框架,支援模型-檢視-控制器模式。它用 Scala 編寫,但也可以用於其他在 Jvm 上編譯並執行的程式語言,例如 Java。
Spark
Spark
是一個用於使用 Kotlin 和 Java 8 建立 Web 應用程式的微框架。它的靈感來自於 Sinatra
,一個流行的 Ruby 微框架。
Orm(物件關係對映)
Orm 是一種程式設計方法,用於在 Java 中將物件對映到資料庫中的關係實體。它是在關聯式資料庫和麵向物件程式語言之間轉換資料的方法。在 Java 中,一些流行的 Orm 工具/框架包括:
Jpa (Jakarta Persistence Api)
Jakarta 永續性 Api
為 Java 開發人員提供了在 Java 應用程式中管理關係資料的物件/關係對映工具。Jpa
既不是工具也不是框架,而是一組用於訪問、持久化和管理 Java 物件與關聯式資料庫之間資料的介面。以下是 Jpa
的主要特性:
- 更清晰、更簡單、更標準化的 Orm。
- 支援繼承、多型和多型查詢。
- 支援使用後設資料註釋/Xml 描述符定義對映(物件與關聯式資料庫之間)。
- 支援用於靜態和動態查詢的豐富的類似 Sql 的查詢語言。
- 可插入的永續性提供程式,如 Hibernate、Mybatis 等。
- 快取:
Jpa
支援兩種型別的快取 - 第一級和第二級 - 以支援效能調整。
注意:在 2019 年,Jpa
從 Java Persistence Api
更名為 Jakarta Persistence
。
Spring Data Jpa
Spring Data Jpa
旨在透過將實際所需的工作量減少到實際需要的程度,從而顯著改進資料訪問層的實現。作為開發人員,您編寫儲存庫介面,包括自定義查詢方法,Spring 將自動提供實現。
Hibernate
Hibernate
是一個開源的物件關係對映工具,為 Web 應用程式提供了將物件導向的域模型對映到關聯式資料庫的框架。
Ebean
Ebean
是一個用 Java 編寫的物件關係對映工具。它支援用於宣告實體的標準 Jpa
註釋。然而,它為持久化提供了一個更簡單的 Api。實際上,關於 Ebean
架構值得一提的一點是它是無狀態的,這意味著它不完全管理實體。
日誌框架
日誌是一個重要的功能,幫助開發人員追蹤錯誤,提供了捕獲日誌檔案的能力。日誌提供應用程式的完整跟蹤資訊,並記錄應用程式中發生的任何關鍵故障。日誌有三個元件:記錄器(Logger)、日誌處理器或附加器(Logging Handlers Or Appenders)和佈局或日誌格式化程式(Layouts Or Logging Formatters)。
Log4j2
Apache Log4j
是一個基於 Java 的日誌實用程式,用於記錄有助於應用程式平穩執行、確定發生了什麼以及在發生錯誤時幫助除錯過程的資訊。Log4j2
是 Log4j
庫的更新版本,保留了其前身的所有日誌功能,並在效能方面進行了顯著改進。
Logback
Logback
是 Java 社群中使用最廣泛的日誌框架之一,是 Log4j
的替代品。它提供更快的實現,更多配置選項,並在存檔舊日誌檔案方面更加靈活。
Slf4j
Slf4j(Simple Logging Facade For Java)
是各種 Java 日誌框架的抽象層,如 Log4j 2
或 Logback
。這允許在部署時插入不同的日誌框架,而無需進行程式碼更改。
Tinylog
Tinylog
是一個輕量級的開源 Java 和 Android 日誌框架,經過最佳化以提供易用性。
Java Jdbc
Jdbc
是 Java 程式設計中用於與資料庫互動的 Api(應用程式程式設計介面)。Jdbc
的類和介面允許應用程式將使用者發出的請求傳送到指定的資料庫。
Jdbi3
Jdbi
是一個開源的 Java 庫(Apache 許可證),它使用 Lambda 表示式和反射來提供比 Jdbc
更友好、更高階的介面,用於訪問資料庫。
Jdbc 模板
Jdbctemplate
是 Spring Jdbc
核心包中的一個核心類,簡化了 Jdbc
的使用並幫助避免常見的錯誤。它在內部使用 Jdbc
Api,消除了許多與 Jdbc
Api 相關的問題。它執行 Sql 查詢或更新,啟動對 Resultsets
的迭代,捕獲 Jdbc
異常,並將其轉換為通用異常。它執行核心的 Jdbc
工作流程,將應用程式程式碼留給提供 Sql 和提取結果。它處理異常,並透過 Org.Springframework.Dao
包中定義的異常類提供資訊性的異常訊息。
測試
構建符合需求且沒有缺陷的軟體的關鍵在於測試。軟體測試幫助開發人員確保他們正在構建正確的軟體。當測試作為開發過程的一部分執行時(通常與持續整合工具一起使用),它們增強了信心並防止了程式碼的迴歸。
模擬(Mocking)
模擬從單元測試中移除外部依賴項,以建立整個可控制環境的感覺。傳統的模擬方法涉及對與我們要測試的類互動的所有其他類進行模擬。常見的模擬目標包括:
- 資料庫連線
- Web 服務
- 慢速類
- 具有副作用的類
- 具有非確定性行為的類
Cucumber Jvm
Cucumber
是一個支援行為驅動開發(Bdd)的測試工具。它提供了一種編寫任何人都能理解的測試的方式,無論他們的技術知識如何。
Cukes
Cukes-Rest
採用 Cucumber
的簡單性,併為 Http 規範提供繫結。作為一種額外的功能,Cukes-Rest
為從檔案系統儲存和使用請求/響應內容、.Features
中的變數支援、所有步驟中的上下文膨脹以及允許使用者新增額外的專案特定內容的自定義外掛系統提供了步驟。
Jbehave
Jbehave
是一種面向行為驅動開發(Bdd)的框架。Bdd
是測試驅動開發(Tdd)和驗收測試驅動設計的演變,並旨在使這些實踐對新手和專家更加易於理解和直觀。它將詞彙從基於測試的轉變為基於行為的,並定位自己為一種設計哲學。
Rest Assured
在 Java 中測試和驗證 Rest 服務比在 Ruby 和 Groovy 等動態語言中更困難。Rest Assured
將使用這些語言的簡便性引入到 Java 領域中。
Jmeter
Apache Jmeter
是一個 Apache
專案,可用作負載測試工具,用於分析和測量各種服務的效能,重點是 Web 應用程式。
Junit
Junit
是 Java 的測試框架。
Testng
Testng
是受到 Junit
和 Nunit
啟發的測試框架,但引入了一些新的功能,使其更強大且更易於使用。
最後
為了方便其他裝置和平臺的小夥伴觀看往期文章:
微信公眾號搜尋:Let Us Coding
,關注後即可獲取最新文章推送
看完如果覺得有幫助,歡迎 點贊、收藏、關注