感悟
很奇怪,我怎么會想着寫這么一篇博客——Java語言的學習體系,這不是大學就已經學過的課程嘛。博主系計算機科班畢業,大學的時候沒少捧着Java教程來學習,不管是為了學習編程還是為了期末考個高分,都在這門語言的學習上下了不少功夫,得益於之前有C語言的基礎,所以那時候並沒有想象的吃力,但是因為Java語言是面向對象設計,所以很多時候還是要從C中轉換一下思想。
大學的學習還是比較自主和自由,大概就是讓自己培養學習的習慣和能力吧,那時候學習Java語言,也是按順序來撿着學,直到最后才有個比較系統的體會,到后來能夠完成一些JavaWeb的項目了,也就開始注重高級開發了,因為按照這樣一來,基礎知識是完全夠用的,不會的時候,查缺補漏一番也能夠解決當時的問題。
在這樣的自我認知中,慢慢的,你覺得你熟悉Java語言,確實當你在做開發的時候,你覺得很順暢很自然,這些都是以你目前知識能夠勝任的,但是,如果讓你說說Java學習的知識體系,你是否能夠按照大學課本上的目錄大概說一遍呢?說說目錄下都有哪些知識點,都能夠讓你學會什么,為什么這樣編排。這一連串的問題,可以在腦海里好好過一下,好像說到每個點自己都會,但是有系統性和連貫性嗎?這可以從側面反應出我們的學習習慣和學習方式和能力,如果你對這種學習體系了如指掌,那么應該很快能夠講出一個大概的體系,這是基礎本領,我覺得你既然用Java這么手藝來討飯吃,那么對它有個脈絡性的熟悉,怎么講都是應該的吧。
其實,博主自己在這里也缺少積累,更加沒有意識到要有這樣的覺悟,平時寫Java程序沒有問題,但是要是問問你學術一點的東西,好像需要想個半天,到最后組織好的語言也沒有書本上的那么專業,而且說不全,更是沒有體系和大綱可言。博主想了起來,17年面試一家互聯網金融公司,就有被面試官問到這個問題:請你說說Java程序設計語言的學習大綱,可以參照大學課本的教學大綱說一說。當時博主是驚訝的,還問這個東西,我表示無語了。當時按照常理來想一想,這應該是Java從業人員都應該會的吧。令人羞愧的是,我在當時居然沒有回答出來,當時就覺得懵逼,完全不按面試的套路出牌啊,我也沒有事先准備,足以見得,還是我平時不注重學習,不注重積累,甚至是學習語言的方式出了問題,這讓我一度開始懷疑自己。
最近在重新梳理知識點,發現如果要往上學習的越牢固越深入,穩固的根基是必不可少的,不管學習哪門語言,這些都是基礎,都是必須要掌握的,所以,借此機會,我想重新梳理和整理一下那些年學過的Java語言程序設計,把學習大綱大概羅列一番,希望能夠給自己留下更深刻的印象,同時也給自己提個醒,學習新東西需要注意方法,建立學習體系很重要,還要自己總結和積累。
知識體系大綱摘要
1、Java入門基礎及環境搭建
- 主要闡述Java語言的歷史和面向對象設計的特點,Java語言在1995年由Sun公司推出,最后在2009年被Oracle收購,目前用得多得版本是JDK1.7和1.8,在筆者寫當前博客時,最新的JDK版本已經到12了。
- 闡述面向對象語言設計的思想,比較面向對象設計和面向過程設計的差異。
- Java JDK的下載和安裝,以及環境變量的配置,使用記事本編寫“Hello world”程序,然后使用CMD命令行編譯和執行,正式入門Java語言的開發。
- 講解Java程序語言的基本要素和編程規范,如何使用流行的IDE來編寫程序,講解NetBeans、Eclipse和IntelliJ IDEA等開發工具的安裝和使用,如何編寫、設置以及調試代碼。
2、Java程序設計基礎
- 講解常量和變量的概念,聲明方式和作用域。
- 8種基本數據類型的定義和概念。
- Java運算符的介紹,諸如算術、賦值、邏輯、關系、自增和自減、位和條件運算符,還包括運算符計算優先級的說明。
- Java基本數據類型的轉換。
3、Java流程控制語句
- 介紹Java語句的編寫方式和編寫規范。
- 流程控制語句的介紹如if else語句、switch case語句、while和do while語句、for和foreach循環語句,以及其他的流程控制語句如return、break和continue語句。
- 通過案例和代碼來熟悉流程控制語句的使用和編寫。
4、Java字符串處理
- 講解String類型的基本定義和使用,以及如何連接字符串、計算長度、轉換大小、去除空格、截取字串、分割字符串、字符串比較和替換,通過這種如連接、修改、替換、比較和查找的方式來熟悉String字符串的基本處理。
- StringBuffer和StringBuilder等可變字符串的講解和使用。
- 正則表達式的講解和使用。
5、Java數字和日期處理
- Java Math類的常用方法介紹。
- Java生成隨機數,數字格式化以及各種類型數字的運算和轉換。
- Java日期和時間的處理,日期格式化和日、月、年等的基本計算。
6、Java數組和基本排序算法
- 數組簡介,一維數組、二維數組和多維數組的介紹。
- 數組的聲明、填充、查找以及復制方法等的說明。
- java數組排序介紹,如基本和常用的冒泡排序、選擇排序、快速排序和插入排序等。
7、Java類和對象
- Java面向對象的概述,認識類和對象及兩者的關系。
- 類的定義,屬性和方法,類變量和類方法,成員變量和成員方法,this關鍵字。
- Java對象的創建,如何訪問對象的屬性和方法。
- 對象的銷毀介紹,訪問控制修飾符介紹。
- static和final修飾符介紹和使用,main方法。
- Java方法的書寫,參數聲明,值傳遞和引用傳遞。
- Java構造方法,包的概念。
8、Java類的封裝、繼承和多態
- Java類的封裝概念。
- Java類的繼承概念和用法介紹,super關鍵字。
- Java對象類型轉換和強制對象類型轉換。
- Java方法的重載和重寫概念,如何區分兩者。
- Java的多態性介紹。
- Java接口和抽象類的說明,以及兩者的比較和區別。
- Java內部類和匿名類介紹和使用。
9、Java異常處理
- Java中的異常介紹,異常處理機制。
- try-catch-finally語句說明和使用。
- 聲明、拋出異常的說明和使用,如何自定義異常。
- 通過大量案例說明異常的使用。
10、Java集合、泛型和枚舉
- Java集合類的概念,Collection接口、List、Set和Map結合的介紹和使用。
- Collection類和各類集合運算,如復制和循環遍歷。
- Java泛型介紹,枚舉類型介紹。
11、Java反射機制
- 反射機制的概念。
- 通過反射來訪問構造函數、方法和成員變量的使用和說明。
12、Java輸入輸出流和文件操作
- Java流的概念,File類等流相關類的介紹和使用。
- Java動態讀取文件內容和輸出。
- Java字節流和字符流的說明和使用。
13、Java多線程編程
- Java中線程的概念,線程的實現方式和聲明周期。
- 多線程訪問實例變量和線程安全問題。
- 多線程的控制和同步機制。
- 多線程API中各方法的使用,停止線程和暫停線程,線程優先級等。
14、Java網絡編程
- Java網絡編程基礎知識,認識Socket。
- 認識TCP和UDP等概念。
- 網絡編程基礎類的學習和使用。
15、Java圖形用戶界面
- 組件布局等的概念介紹。
- 布局搭建,時間處理和Applet。