一、 集合框架和泛型
- 1. 定義
集合框架用於存儲一組長度不定的元素。
- 2. 常用的接口和類
接口:Collection、List、Set、Map、Iterator
類:ArrayList、LinkedList、HashSet、HashMap
List接口和Set接口均繼承自Collection接口。
- 3. 使用特點
List:存儲的元素不唯一、有序。
Set:存儲的元素唯一、無序。
Map:元素以鍵值對的方式進行存儲。
- 4. ArrayList和LinkedList的區別
ArrayList:查找元素速度快,性能高;但是不適合頻繁的對集合元素進行插入、修改、刪除。
LinkedList:在頻繁對集合元素進行插入、修改、刪除時效率高,速度快;但是查找速度不如ArrayList。
- 5. 集合常用方法:
List:
add(Object obj)、remove(Object obj)、remove(int index)、size()、get(int index)、iterator()、clear()
Set:
add(Object obj)、remove(Object obj)、size()、iterator()、clear()、沒有get方法
Map:
put(Object key, Object value)、get(Object key)、keySet()、values()、size()、remove(Object key) 、clear()
二、 實用類
- 6. 枚舉
定義 : 一組固定的常量。
語法
訪問修飾符 enum 枚舉名{ 常量一, 常量二, … … } |
用法
聲明枚舉變量並賦值:Season season = Season.Spring;
switch:
switch(枚舉變量){ 常量一: … … Break; 常量二: … … Break; } |
- 7. 包裝類
每個值類型(基本數據類型)都存在一個對應的包裝類。
int->Integer、double->Double、boolean->Boolean、char->Charactor、… …
值類型和包裝類的相互轉換
拆箱和裝箱
裝箱:將值類型轉換為引用類型。
拆箱:將引用類型轉換為值類型。
- 8. Math類
Math類的作用
提供一系列與科學計算相關的方法。
常用方法:random()、floor()、ceiling()、max()、min()、round()
- 9. String類
常用的方法:substring()、indexOf()、lastIndexOf()、replace()、split()、length()
- 10. Random類
作用 : 生成隨機數。
常用方法:nextInt()、nextInt(int)、nextDouble()、nextXXX()
- 11. 日期時間類
Date
Calendar
SimpleDateFormat
- 12. StringBuilder(StringBuffer)和 String 的區別?
String 在進行運算時(如賦值、拼接等)會產生一個新的實例,而 StringBuilder 則不會。所以在大量字符串拼接或頻繁對某一字符串進行操作時最好使用 StringBuilder(StringBuffer),不要使用 String。
三、 輸入輸出IO
IO操作相關的包:java.io
- 13. File類
功能:實現對文件和目錄的常規操作。
常用的方法:
方法名 |
作用 |
exits() |
判斷文件或目錄是否存在 |
|
|
|
|
- 14. 流的分類
根據方向分類:
輸入:InputStream、Reader
輸出:OutputStream、Writer
根據流操作的數據單位分類:
字節流:InputStream、OutputStream
字符流:Reader、Writer
實現類
(抽)InputStream |
(抽)OutputStream |
(抽)Reader |
(抽)Writer |
FileInputStream |
FileOutputStream |
InputStreamReader |
OutputStreamWriter |
DataInputStream |
DataOutputStream |
FileReader |
FileWriter |
ObjectInputStream |
ObjectOutputStream |
BufferedReader |
BufferedWriter |
序列化和反序列化
序列化是指將內存中對象的狀態轉換為可以存儲或傳輸的格式的過程。
四、 多線程
- 15. 進程和線程的區別
計算機中一個正在運行的可執行程序的實例就是進程。一個進程可以包含多個線程。單個線程用於完成一個任務,而同時創建多個線程來完成多項任務,便是多線程。
二者都定義了某種邊界,不同的是進程定義的是應用程序與應用程序之間的邊界,不同的進程之間不能共享代碼和數據空間,而線程定義的是代碼執行堆棧和執行上下文的邊界。
用一個比喻來說,如果一個家庭代表一個進程,在家庭內部,各個成員就是線程,家庭中的每個成員都有義務對家庭的財富進行積累,同時也有權利對家庭財富進行消費,當面對一個任務的時候,家庭也可以派出幾個成員來協同完成,而家庭之外的人則沒有辦法直接消費不屬於自己家庭的財產。
- 16. Java中使用線程的步驟
- 17. Java中定義線程的2種方式
- 18. 線程的優先級
- 19. 線程的生命周期
- 20. 線程的同步
- 21. 線程常用方法
五、 網絡編程
- 22. 什么是TCP和UDP,他們的差異是什么?
TCP(Transmission Control Protocol,傳輸控制協議)是基於連接的協議,也就是說,在正式收發數據前,必須和對方建立可靠的連接(信任連接)。
UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是面向非連接的協議,它不與對方建立連接,而是直接就把數據包發送過去!
UDP適用於一次傳送少量數據、對可靠性要求不高的應用環境,但是傳輸速度快。
TCP適用於一次傳送大量數據、對可靠性要求較高的環境,數據傳輸速度慢。
六、 XML操作
- 23. XML基本概念
XML即可擴展標記語言。一般用來存儲數據和在網絡間傳輸數據。
XML很像超文本標記語言(HTML);但它又未規定固有的標記有哪些。
XML使用規范大致包括:
每個XML文件的第一行為XML聲明,定義了XML版本和編碼等信息。
一個XML文檔有且僅有一個根節點。
XML對大小寫敏感,區分大小寫。
每個XML標記必須包含開始標記和結束標記。
XML的標記必須正確的潛逃。
- 24. XML 與 HTML 的主要區別
XML用於存儲和傳輸數據,而HTML則用於顯示數據。
XML區分大小寫字母,而HTML不區分。
HTML的開始標記可以沒有對應的結束標記,而XML的開始標記必須要有結束標記相對應。
在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。
在HTML中可以有不帶值的屬性名。但是在XML中,所有的屬性都必須帶有相應的值。
XML中的標記可由用戶自定義,而HTML則約定了可以使用哪些標記。
- 25. JAVA中操作XML有哪些技術
DOM方式
DOM 是 W3C 處理 XML 的標准 API,它是許多其它與 XML 處理相關的標准的基礎。它根據XML文檔中節點間的關系進行操作,最大的問題就是需要將整個XML文檔一次性加載到內存中。
SAX
SAX 從根本上解決了 DOM 在解析 XML 文檔時產生的占用大量資源的問題。其實現是通過類似於流解析的技術,通讀整個 XML 文檔樹,通過事件處理器來響應程序員對於 XML 數據解析的需求。
Dom4j
Dom4j是一個易用的、開源的庫,用於XML,XPath和XSLT。它應用於Java平台,采用Java集合框架實現,並完全支持DOM,SAX和JAXP。
- 26. 什么是xpath
XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。XPath基於XML的樹狀結構,提供在數據結構樹中找尋節點的能力。
表達式 |
說明 |
示例 |
nodename |
選取此節點的所有子節點 |
bookstore() |
/ |
從根節點選取 |
/bookstore(選取根元素bookstore) |
// |
從匹配的當前節點選擇節點,不考慮位置 |
//book選取所有book子元素,不管其位置 |
. |
選取當前節點 |
|
.. |
選取當前節點的父節點 |
|
@ |
選取屬性 |
//@lang選取名為lang的所有屬性 |