java基础四
多线程
实现Runnable接口比继承Thread类所具有的优势:
1):适合多个相同的程序代码的线程去处理同一个资源
2):可以避免java中的单继承的限制
3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。
线程的生命周期
新建:使用关键字new创建一个线程后,处于新建状态,此时仅由虚拟机为其分配内存并初始化成员变量,程序不会执行线程执行体。
IO流的分类
- 根据处理数据类型的不同分为:字符流和字节流
- 根据数据流向不同分为:输入流和输出流
- 根据数据功能不同分为:节点流和处理流
只要是处理纯文本数据,就优先考虑使用字符流;除此之外都使用字节流。
对象流:以对象为单位传输数据。使用类ObjectInputStream和ObjectOutputStream实现,以FileOutputStream和FileInputStream类进行流的中转保存。
对象的序列化:把堆中的对象转化为二进制数据的形式输出。
对象的反序列化:把二进制数据还原成堆中的对象。
序列化标示关键字:Serializable
不能被序列化的关键字:transient
序列化:就是只把一个对象串行化成一个字节流,用于网络传输或者持久化。
JAVA图像界面编程
在java中有ATW和Swing两套组件用于支持图形用户界面编程。
ATW是最早出现的,但是过于依赖操作系统,有很大弊端,AWT 是依靠本地方法来实现其功能的,所以通常把AWT组件称为重量级组件。
Swing是在ATW之上开发的。完全有java代码编写,不依赖操作系统,可以自己调节外观,使得程序员编写程序更方便。
Swing的GUI(图形用户界面)是由容器和组件组成,容器是放置组件的。
布局管理器
FlowLayout: 组件在一行中从左至右水平排列。
BorderLayout:北、南、东、西、中。
GridLayout:以行和列的网格形式安排组件
BoxLayout:更复杂、功能更强的网格布局
事件驱动编程
事件:描述发生了什么的对象。
存在各种不同类型的事件类用来描述各种类型的用户交互。
事件源:事件的产生器。
事件处理器:接收事件、解释事件并处理用户交互的方法