Java高级复习

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12、线程间通信:wait()和notify()相互通知对方。
基本知识点:
1、Thread:系统提供的线程类
start():启动线程
sleep():让当前线程休眠指定的时间
yield():让当前线程让出CPU,然后进行调度
join():只有执行完当前线程后,才能继续执行后面的代码
6、HttpURLConnection:是URLConnection的子类,专门用于HTTP协议。
案例:
1、TCP通信
2、UDP通信
3、Thread(难点非重点)
基本概念:
1、同步:按先后的次序执行。
2、异步:没有次序,同时执行。
3、程序:指令(CPU可以执行的命令)的有序集合。一般以文件的方式存储在硬盘中(是程序的静态表现)。
clazz.getDeclaredConstructor(构造的参数列表):获取类中定义的指定的构造函数
newInstance():调用类的默认构造初始化类的对象
3、Field:表示了类的成员变量
4、Method:表示了类的成员方法
method.invoke(类的对象, 实际参数列表):调用成员方法
2、TCP:传输控制协议,是一个基于连接的协议(要求服务器先启动并在指定的端口上进行监听,然后客户端去请求与服务器连接,连接后才能进行通讯),类似打电话。可以准确无误的传递数据,系统开销较大。
3、UDP:用户数据报协议,是一个无连接的协议(发送方只要把数据发送到指定的端口上就完成了通讯,接收方从指定的端口上接收数据即可),类似发邮件,不能保证数据是否被对方收到,系统开销较小。
5、Constructor:表示了类的构造函数
案例:
1、使用反射调用指定类的指定方法
2、使用反射与IO调用指定类的指定方法
5、XML(重点)
基本概念:
1、XML:可扩展的标记语言(可以自定义标签),要求比HTML更加严格,XML文档是单根树状结构。
2、XML的验证:使用一个文件对XML进行验证,验证文件是DTD或Schema。
输入:InputStreamReader
输出:OutputStreamWriter
案例:
1、字符流的读写
2、字节流的读写
3、含缓冲的文件拷贝
2、Socket(难点非重点)
基本概念:
1、Socket:套接字,就是通信的一个端点,由IP(标识计算机) + Port(标识应用程序)。
2.1、格式良好的XML:符合XML语法规范的XML文档。
2.2、有效的XML:格式良好并满足验证要求的XML文档。
3、读写方式:
1、SAX:边读边解析,速度快,只读。
2、DOM:先在内存中生成一颗DOM树,然后再解析,可读写。
基本知识点:
以JDOM组件为例
while((count = is.read(buffer)) != -1){
// ......
}
is.close();
带缓冲的字节输入流:BufferedInputStream
1.2、基础的字符流输入对象:Reader
文本文件的输入流:FileReader
2.4、常用操作
添加:add()
删除:remove() clear()
Socket():用于在客户端产生一个Socket对象并向服务器端发送连接请求。
getInputStream():获取输入流对象,进而可以读取其中的数据。(接收)
getOutputStream():获取输出流对象,进而可以向其中写入数据。(发送)
3、DatagramSocket:用于UDP通信
代码区(一般是64K,仅存放一份类的代码,由VM管理)用于加载类的信息
堆(比较大,需要GC去清理不用的空间)用于存放对象
栈(比较小,会自动的清除不用的空间)用于存放临时变量
全局区(存放公用的数据,由VM管理)用于存放static数据、字符串、字面量
2、静态加载:程序在运行前已经把需要的类加载到代码区,不能在运行时改变。
基本知识点:
1、ServerSocket:用于TCP通信的服务器端,主要是监听客户端发送的连接请求
accept():是一个阻塞方法,接收客户端的请求,如果请求成功则返回一个新的Socket对象,该对象与客户端的Socket对象进行通讯
2、Socket:用于TCP通信的服务器端和客户端
7、线程的状态:
7.1、初始:创建了线程对象,但还没有调用start方法。
7.2、就绪:线程已经获取了运行时所需要的各种资源,等待系统调度进入运行状态
7.3、运行:线程正在运行
7.4、挂起:时间片用完了或没有请求到的资源或被其他原因阻止(sleep、join、yield)
带缓冲的字符输入流:BufferedReader
2、写(输出):
2.1、基础的字节流输出对象:OutputStream
二进制文件的输出流:FileOutputStream
os.write("要输出的内容".getBytes());
os.flush();
os.close();
带缓冲的字节输出流:BufferedOutputStream
2.2、基础的字符流输出对象:Writer
文本文件的输出流:FileWriter
带缓冲的字符输出流:BufferedWriter
3、转换:(字节流 -> 字符流)
}
3.2、同步方法
public synchornized 方法返回值 方法名(参数列表) {
// 只允许一个线程访问的代码
}
案例:
1、多线程同时拷贝多个文件
2、多线程同一账号并发取款
4、Reflect(难点非重点)
基本概念: 1、内存结构: fo Nhomakorabeaeach
iterator
判断存在:contains()
2、列表集合
2.1、ArrayList:基于数组实现的,检索较快,增加和删除较慢,效率高。
2.2、LinkedList:基于链表实现的,检索较慢,增加和删除很快。
2.3、Vector:线程安全的集合,效率低。
1、SAXBuilder
build():创建Document对象
2、Document
getRootElement():获取根元素
setRootElement():设置根元素
3、Element
getChildren():获取子节点集合
getAttributes():获取属性集合
3、动态加载:程序在运行时,可以依据需要加载指定的类到代码区。
4、反射机制:动态加载要使用的类,进而获取类的信息,可以调用类的方法。这样的机制可以在程序运行时灵活的改变程序中要使用的类,进而可以应对不同的变化。
基本知识点:
1、反射的方式:
1.1、ClassLoader的loadClass():加载指定的类到代码区。
clazz.getDeclaredMethods():获取类中定义的所有的成员方法
clazz.getDeclaredMethod("成员方法名", 方法的参数列表):获取类中定义的指定的成员方法
clazz.getDeclaredConstructors():获取类中定义的所有的构造函数
4、进程:在内存中运行的程序(是程序的动态表现),一个程序可以产生多个进程(如:QQ)。
5、线程:一个独立的执行单元(一段可以独立运行的代码)。每个进程中至少有一个线程(也称主线程),主线程可以创建多个子线程,主线程和多个子线程共享进程申请的内存空间。
6、分时操作系统:把一段时间拆分成多个小的时间段(时间片),以轮循的方式调度每个时间片,每个时间片与一个线程相关联,线程运行在时间片上,到时间后,线程被挂起。
2、Runnable:系统提供的接口
run():线程需要执行的代码,不能直接调用run方法,否则不会并发执行。
3、线程同步的解决方法(synchornized)
3.1、同步块
synchornized(需要锁定的对象) {
// 只允许一个线程访问的代码
7.5、死亡:线程运行时遇到异常或线程运行结束。
8、线程优先级:高优先级线程优先执行。
9、线程调度:是由分时操作系统按一定的算法完成的。
10、线程安全问题:多个线程访问同一个对象(变量)就有可能导致线程安全问题(访问的数据不可靠)。
11、线程同步:通过锁定机制来解决。要求每个线程在访问同一个对象时,先加锁,再访问,最后解锁,这样就可以实现线程同步。线程同步也会产生死锁的问题。
send(datagramPacket):发送数据到指定的端口
receive(datagramPacket):从指定的端口接收数据
4、DatagramPacket:数据的载体,封装了发送或接收的数据。
getData():获取接收到的数据。
5、URL
openConnection():获取一个URLConnection对象,进一步可以获取其输入流得到输入的内容。
1.2、Class的forName():加载指定的类到代码区并执行类中的静态块(初始化静态成员)。
2、Class:描述了类的信息。
clazz.getDeclaredFields():获取类中定义的所有的成员变量(字段/属性)
clazz.getDeclaredField("成员变量名"):获取类中定义的指定的成员变量(字段/属性)
setAttribute():设置一个属性
addContent():添加一个子节点
removeContent():删除一个子节点
getTextTrim():获取节点中的文本
4、Attribute
5、XMLOutputter:XML文档的输出对象
setFormat():设置输出的格式
1.3、Map:一堆键值对数据,要求每个键值对中的键不能重复。
2、泛型:数据类型参数化。数据安全并且效率高。
基本知识点:
1、普通集合
HashSet
常用操作
添加:add()
删除:remove() clear()
修改:add()
迭代:
5、反序列化:把一个流转换成对象。
基本知识点:
1、读(输入):
1.1、基础的字节流输入对象:InputStream
二进制文件的输入流:FileInputStream
int count = 0;
byte[] buffer = new byte[1024];
output(Document对象, 文件输出流对象):输出到指定的文件中
案例:
1、读取XML文档
2、写入XML文档
3、修改XML文档
6、集合与泛型(重点且难点)
基本概念:
1、集合及分类
1.1、Set:一堆无序并不重复的数据。
1.2、List:一堆有序可重复的数据,可以使用下标进行检索。
Java高级复习
1、IO(重点)
基本概念:
1、输入:把数据读入到内存中。
2、输出:把数据写到外存(硬盘上的文件)中。
3、流:就是一个序列。
3.1、字节流:以字节为单位的序列。
3.2、字符流:以字符(经过编码的字节)为单位的序列。
4、序列化:把一个对象转换成流。要求对象必须实现Serializable接口,其成员变量必须也能序列化。
相关文档
最新文档