A. 關於java工具類的理解 為什麼java要提出個工具類的概念,按照面向對象的思想為什麼不直接把工具
工具類其實就是對於String,Collection,IO等常用類的功能的擴展。比如IO讀寫文件。其實大多數時候我希望有一個文件路徑,然後調個方法就直接得到文件內容(字元串或者位元組數組形式)。
如果沒有工具類,那麼你每個讀文件的地方都有一段重復的代碼。所以,你肯定會被這個功能提取出來。那麼,你提取出來放哪兒呀?要知道這個功能可是在任何類都能調用的。所以,我們就放在FileUtil裡面了。
這樣,你以後讀取文件時,你就找FileUtil的read方法,直接調用即可。
為什麼要將方法和變數都寫成靜態的。因為,這些方法我只是想調用一下,不需要牽扯工具類中的任何屬性和變數,所以,我就沒有必要實例化了(new)。既然不需要實例化了,那麼就用靜態就行了。
B. Java.util是什麼意思
1. util包的框架
常用的集合類主要實現兩個「super介面」而來:Collection和Map。
1.1 Collection有兩個子介面:List和Set
List特點是元素有序,且可重復。實現的常用集合類有ArrayList、LinkedList,和Vector(線程安全)。
Set特點是元素無序,不可重復。實現的常用集合類有HashSet,LinkedHashSet,TreeSet(可排序)
1.2 Map是key、value鍵值對的集合
特點是key值無序不可重復,value值可重復(這樣表述其實不太准確,因為實際上key和value是綁定在一起的)。常用的有HashMap,HashTable(線程安全),TreeMap(可排序)。
1.3 其餘重要介面和類
上面是util包中的集合框架,一般Java教材裡面都會講到。但我們深入研究一下,會發現還有其餘幾個重要的內容:
Iterator:迭代介面
集合類實現該介面後便具有了迭代功能。最簡單的迭代實現是ArrayList,迭代過程其實就是數組的迭代。LinkedList、LinkedHashSet和LinkedHashMap迭代過程就是鏈表的迭代。這兩者的迭代效率都很高,迭代時間與容器里的元素數目成正比。但HashSet、HashMap迭代效率就略低了,因為採用了哈希表,所以元素是散列在數組中的,迭代時必須讀完整個數組,迭代時間與容器的容量成正比。
Comparator:比較介面
實現該介面後,集合內元素便可比較通過compare()方法實現元素排序
AbstractXXX:骨架類
所謂骨架類,其實就是不同集合的核心代碼實現,讓繼承這個抽象類的子類少干點活。例如AbstarctList代表「隨機訪問」集合(底層數組實現)的骨幹代碼實現。AbstractSequentialList代表「連續訪問」(底層鏈表實現)集合的骨幹代碼實現。
Collections、Arrays
集合工具類和數組工具類。Java中的工具類好像都喜歡在對應的介面或類名稱後,加S來表示其工具類。
C. 誰能詳細的給我講述一下java里分,biz,util,web的包的含義么詳細解釋。每個包都什麼意思,做什麼用的
這其實很好理解,這是java的mvc架構,這就像工廠中車間的情景一樣,每個部門分管不同的流程和工作,比如
即使data access object,主要負責處理資料庫操作;
biz,business層,負責整個應用程序的相關業務流程,並用代碼實現出來;
util,即utility,工具輔助層,一組通用的代碼集合,比如處理多語言功能,網站非法信息過濾等等功能的代碼集;
web,即是前台網頁處理的後台代碼,負責把從資料庫中處理過的數據,通過web層處理之後,顯示成html代碼的部分。。。
這樣經過每部分的分工合作,團隊之間能更好的開發應用程序,而應用程序之間的運作也會相對比較順暢。。
D. java 什麼叫工具類
是包含集合框架、遺留的 collection 類、事件模型、日期和時間設施、國際化和各種實用工具類(字元串標記生成器、隨機數生成器和位數組、日期Date類、堆棧Stack類、向量Vector類等)。集合類、時間處理模式、日期時間工具等各類常用工具包
E. java工具類的規范要求工具類中方法可以是私有方法嗎
可以,所謂的工具類,都是人為的分類,java規范里是沒有這種說法的。所以正常類里有的元素,工具類里都可以有。
F. 你常用的Java工具庫都有哪些
JavaSDK肯定是使用最廣的庫,所以本文的名單焦點是流行的第三方庫。該列表可能並不完善,所以如果你覺得有什麼應該出現在列表中的,請留下您的評論。非常感謝!
1、核心庫
Apache Commons Lang:來自Apache的核心庫,為java.lang API補充了許多常用的工具類,如字元串操作、對象的創建等。
Google Guava:來自谷歌的核心庫,包括集合(Collection)、緩存(Caching)、支持原語(Primitives)等。(示例)
2、HTML、XML Parser
Jsoup:一個簡化了的 HTML操作的庫。(示例)
STaX:一組可以高效處理XML的API。 (示例)
3、Web框架
Spring:Java平台上眾所周知的開源框架和依賴注入容器。(示例)
Struts2:來自Apache的流行Web框架。 (示例)
GoogleWebToolkit:Google提供的開發工具庫,主要用於構建和優化復雜的Web程序用。 (示例)
Strips:使用最新Java技術構建的Web程序框架,推薦使用。
Tapestry:面向組件的框架,用於使用Java創建動態、健壯、擴展性高的Web應用程序。
請猛擊這里查看以上面框架之間的比較。
4、圖表、報表、圖像
JFreeChart:用於創建如條形圖、折線圖、餅圖等圖表。
JFreeReport:創建於輸出PDF格式的報表。
JGraphT:創建圖像,其中只包含由線段連接的點集。
5、窗口
Swing:SDK提供的GUI庫。(示例)
SWT:eclipse提供的GUI庫。
SWT與Swing的比較。
6.、GUI框架
EclipseRCP。(示例)
7、自然語言處理
OpenNLP:來自Apache的自然語言處理庫。 (示例)
StanfordParser:斯坦福大學提供的自然語言處理庫。(示例)
如果你是一名NLP專家,請猛擊這里查看更多工具庫介紹。
8、靜態分析
EclipseJDT:由IBM提供的靜態分析庫,可以操作Java源代碼。(示例)
WALA:可以處理jar包文件(即位元組碼)的工具庫。(示例)
9、JSON
Jackson: 用於處理JSON數據格式的多用途的Java庫。Jackson 旨在快速、准確、輕量、對開人員友好之間找到最好的平衡點。
XStream:一個簡單用於對象和XML互相轉換的庫。
GoogleGson:一個專門用於Java對象和Json對象相互轉換的工具庫。(示例)
JSON-lib:用於beans、maps、collections、javaarrays、XML和JSON之間相互轉換操作的工具庫。
10、數學
ApacheCommonsMath:提供數學計算和數值統計需函數的工具庫。
11、日誌
ApacheLog4j:風行一時的日誌記錄操作庫。(示例)
Logback:當前流行的log4j項目的繼任者。
SLF4J(TheSimpleLoggingFacadeforJava): 各種日誌框架的一個簡單的外觀或抽象(如java.util.logging 、logback、log4j等),允許用戶在部署時加入需要的日誌框架。
12、Office
ApachePOI:利用其提供的APIs,可以使用純Java代碼操作各種基於微軟OLE2合成文檔格式的文檔。
Docx4j:一個用於創建、操作微軟公開的XML文件的庫(支持Worddocx、 Powerpointpptx和Excelxlsx)。
13、日期和時間
Joda-Time:如有質量問題包退包換的Java日期和時間類。
14、資料庫
Hibernate、EclipseLink、JPA
JDO
jOOQ
SpringJDBC、SpringData
ApacheDbUtils
15、開發工具
Lambok: 旨在減少代碼編寫的Java開發庫。