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开发库。