寫這篇文章的目的是想總結一下自己這麼多年來使用java的一些心得體會,主要是和一些java基礎知識點相關的,所以也希望能分享給剛入門的Java程式設計師和打算入Java開發這行當的準新手們,希望可以給大家一些經驗,能讓大家更好學習、使用Java。
這次介紹的主要內容是和J2SE相關的部分,經過這麼多年的Java開發,以及結合平時面試Java開發者的一些經驗,我覺得對於J2SE方面主要就是要掌握以下的一些內容。
1. JVM相關(包括了各個版本的特性)
對於剛接觸Java的人來說,JVM相關的知識不一定需要理解很深,對此裡面的概念有一些簡單的了解即可。不過對於一個有著3年以上Java經驗的資深開發者來說,不會JVM幾乎是不可接受的。
JVM作為java運作的基礎,很難相信對於JVM一點都不了解的人可以把java語言吃得很透。我在面試有超過3年Java經驗的開發者的時候, JVM幾乎就是一個必問的問題了。當然JVM不是唯一決定技術能力好壞的面試問題,但可以佐證java開發能力的高低。
在JVM這個大類中,我認為需要掌握的知識有:
JVM記憶體模型與結構
GC原理,效能調優
- class 二進位字節碼結構, class loader 體系,class加載過程, 實例創建過程
- javac 編譯java檔案為class 檔案
- java 指令的使用, 帶package的java類別如何在命令列中啟動到的java
各個路徑(classpath, java。library。path,java 運作的主目錄等)
3. 資料型別
這條沒有什麼說的,無非就是Java中的基本型別和物件類型好多的掌握。可以再了解一些JDK如何自動轉換方面的知識,包括裝箱拆箱等,還要注意避免裝箱之後的類型相等的判斷
主要知識點:
基本類型: int, long, float, double, boolean , 。 。 。
對應的物件類型: Integer 等型別到基本型別的轉換, 裝箱與拆箱
Object型別: equals, hashcode
String 類型: equals, hashcode
- 物件和實例,物件的創建在這方面,開發者需要了解class和instance的概念以及之間的差別, 這是java物件導向特性的一個基礎。主要知識點有:
Class和Instance 的概念;
Instance 創建的過程:1. 無繼承:分配記憶體空間,初始化變數,呼叫構造函數;2. 有繼承:處理靜態動作,分配記憶體空間, 初始化變數,呼叫構造函數;2. 有繼承:處理靜態動作,分配記憶體空間, 變數定義為初始值, 從基類->子類, 處理定義處的初始化, 執行構造方法;
需要注意的點:靜態屬性等從基類->子類進行初始化;默認無參構造方法相關的特性。
5. 存取控制
這也是java封裝特性的一個基礎,需要掌握的有:- public protected default private 對於class, method, field 的修飾作用 public protected default private 對於class,Javaod
流程
.控制的基礎, 雖然有些語法不一定很常用,但是都需要了解,並且在合適的地方使用它們。7. 物件導向程式設計的概念
這是一個java的核心概念,對於任何java開發者都需要熟練。 Java中很多特性或說知識點都是跟java物件導向程式設計概念相關的。在我的理解, 一個好的開發者不只需要了解這些特性(知識點)本身,也更需要知道這些物件在java的物件導向程式設計概念中是如何體現出來的,這樣更有利於開發者掌握java這門開發語言,以及其他物件導向程式設計的語言。這裡只是簡單羅列了一下,主要的知識點包括有:
面向對像三大特性:封裝,繼承,多態性; 各自的定義概念,有哪些特性體現出來,各自的使用場景
靜態多分派,動態單分派的概念
重載的概念和使用
繼承:介面多實現,基類單繼承
抽象,態:方法覆蓋的概念和使用
介面回調
8. Static
靜態屬性在java日常開發中也是經常使用,需要了解和static 相關的用法,還有和其他關鍵字的配合使用, 如是否可以和abstract, final 等關鍵字合併使用。
主要需要掌握的有:
靜態屬性的定義,使用,以及類別載入時如何初始化
靜態方法的定義和使用
- 靜態方法的定義和使用
程式碼塊的定義和初始化時機
這裡主要羅列一些散落的,沒有系統歸類的一些java知識點。在日常的開發中用到也不少。 這塊內容其實還有很多,目前只是暫時歸納了這幾個在這裡:
包括有:equals , hashcode , string/stringbuffer ,final , finally , finalize
10.集合框架
這個是這個需要多加加掌握的部分,做java開發,可以說沒有不用到集合框架的,這很重要。但是這裡的知識點並不難,但是對於集合最好要了解內部的實現方式, 因為這樣有助於你在各個不同的場景選擇適合的框架來解決問題,比如有1W個元素的集合,經常要進行contains判斷操作,知道了集合的特性或內部實現,就很容易做出正確的選擇。
這裡包括瞭如下內容(並發相關不包含在內):
集合框架的體系: 基礎Collection ,Map
具體集合實現的內容, List ,Set ,Map
- 具體集合實現的內容, List ,Set ,Map 具體集合實現的內容, List ,Set ,Map
- 具體集合實現的內容, List ,Set ,Map
具體集合實現的內容, List ,Set ,Map
具體集合實現的內容, List ,Set ,Map
,內部結構具體的具體的實現, 特殊的方法, 適用場景等 集合相關的工具類Collections 等的用法11.異常框架
- 11.異常框架
- 在java的開發中可能沒有那麼被重視的開發。一般遇到異常,直接上拋,或隨便catch一下處理之後對於程式整體運作也沒有什麼大的影響。不過在企業級設 計開發中, 異常的設計與處理的好壞,往往就關係著這個系統整體的健壯性。一個好的系統的異常對於開發者來說,處理應該統一,避免各處散落很多異常處理邏輯;對於系統來說,異常應該是可控的,並且是易於運維的,某些異常出現後,應該要有應對的方法,知道如何維運處理,所以雖然異常框架很簡單,但是對於整個企業級應用開發來說,異常處理是很重要的,處理好異常就需要了解Java中的異常體系。 這部分需要掌握的知識點不多,主要就是:
- 異常的系統:
- Throwable
- 12.Java IO
IO 在java中不僅僅是文件讀寫那麼簡單,也包括了socket 網路的讀寫等等一切的輸入輸出操作。比如說標準HTTP請求中Post的內容的讀取也是一個輸出的過程,等等…
對於IO,Java不僅提供了基本Input、Output相關的api,也提供了一些簡化操作的Reader、Writer等api ,在某些開發(涉及大量IO操作的項目)中也很重要,一般日常的開發中也會涉及(日誌,臨時文件的讀寫等)。 在這中的知識點主要有:
基本IO的體系: 包括有InputStream , OutputStream, Reader/Writer, 文件讀取,各種流讀取等
多執行緒是Java中普遍認為比較難的一塊。多執行緒用好了可以有效提高cpu使用率, 提升整體系統效率, 特別是在有大量IO操作阻塞的情況下;但是它也是一柄雙刃劍, 如果用不好,系統非但提升不大,或者沒有提升,而且還會帶來多執行緒之間的調試時等問題。
在多線程中內容有很多,只是簡單說明一下Java中初步使用多線程需要掌握的知識點,以後有機會單獨再詳細介紹一些高級特性的使用場景。
多執行緒的實作與啟動
callable 與runable 區別
syncrhoized執行結果
concurrent 套件
lock
..
- 14.T在需要強調網路效能的情況下,可以直接使用TCP/UDP 進行通訊。在查看Tomcat等的原始碼中,就可以看到這些相關API的使用情況。不過一般也比較少會直接使用TCP,會使用諸如MINA、Netty這樣 的框架來進行處理,因為這個方面的開發涉及不多,所以就不再詳細羅列了。
15.時間日期處理
XML: 需要了解 DOM解析和 SAX解析的基本原理和各自的適用場景
JSON: 需要了解一些常用JSON框架的用法, 如 Jackson, FastJson, Gson 等。
- 17.Maven的使用
- Maven 也不是Java裡面的內容,但是maven是革命性的,為java開發帶來了巨大的便利。從依賴的引入和管理,開發流程的更新和發布產出,乃至版本的更 新,使用maven可以大大簡化開發過程中的複雜度,從而節省大量時間。可以說,maven已經成為java開發者的標配了。所以我把maven也當作一 個java開發者對於基礎必備的知識點。以後再放上一些我的一些對於maven使用的經驗和技巧等,這裡就不再細說了。
18.泛型
19.標註
20.RMI
21.JNI
Java Native Interface,可以允許Java中呼叫本機介面方法,一般用於C/C++程式碼的呼叫。需要注意的是在java中載入so/dll檔案的路徑問題,本身呼叫介面並不複雜,但是經常在是否載入了所需的本地介面庫中花費較多時間。
以上就是Java的21個技術點和知識點歸納的內容,更多相關內容請關注PHP中文網(www.php.cn)!

javaispopularforcross-platformdesktopapplicationsduetoits“ writeonce,runany where”哲學。 1)itusesbytiesebyTecodeThatrunsonAnyJvm-備用Platform.2)librarieslikeslikeslikeswingingandjavafxhelpcreatenative-lookingenative-lookinguisis.3)

在Java中編寫平台特定代碼的原因包括訪問特定操作系統功能、與特定硬件交互和優化性能。 1)使用JNA或JNI訪問Windows註冊表;2)通過JNI與Linux特定硬件驅動程序交互;3)通過JNI使用Metal優化macOS上的遊戲性能。儘管如此,編寫平台特定代碼會影響代碼的可移植性、增加複雜性、可能帶來性能開銷和安全風險。

Java將通過雲原生應用、多平台部署和跨語言互操作進一步提昇平台獨立性。 1)雲原生應用將使用GraalVM和Quarkus提升啟動速度。 2)Java將擴展到嵌入式設備、移動設備和量子計算機。 3)通過GraalVM,Java將與Python、JavaScript等語言無縫集成,增強跨語言互操作性。

Java的強類型系統通過類型安全、統一的類型轉換和多態性確保了平台獨立性。 1)類型安全在編譯時進行類型檢查,避免運行時錯誤;2)統一的類型轉換規則在所有平台上一致;3)多態性和接口機制使代碼在不同平台上行為一致。

JNI會破壞Java的平台獨立性。 1)JNI需要特定平台的本地庫,2)本地代碼需在目標平台編譯和鏈接,3)不同版本的操作系統或JVM可能需要不同的本地庫版本,4)本地代碼可能引入安全漏洞或導致程序崩潰。

新興技術對Java的平台獨立性既有威脅也有增強。 1)雲計算和容器化技術如Docker增強了Java的平台獨立性,但需要優化以適應不同雲環境。 2)WebAssembly通過GraalVM編譯Java代碼,擴展了其平台獨立性,但需與其他語言競爭性能。

不同JVM實現都能提供平台獨立性,但表現略有不同。 1.OracleHotSpot和OpenJDKJVM在平台獨立性上表現相似,但OpenJDK可能需額外配置。 2.IBMJ9JVM在特定操作系統上表現優化。 3.GraalVM支持多語言,需額外配置。 4.AzulZingJVM需特定平台調整。

平台獨立性通過在多種操作系統上運行同一套代碼,降低開發成本和縮短開發時間。具體表現為:1.減少開發時間,只需維護一套代碼;2.降低維護成本,統一測試流程;3.快速迭代和團隊協作,簡化部署過程。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver CS6
視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。