JAVA高级阶段知识点汇总
一、 集合框架和泛型
- 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的所有属性 |