Java高级编程知识总结及复习(二)

Java高级编程知识总结及复习(二)

异常处理过程

1、只有程序运行过程中才会产生异常,一旦程序运行过程过产生异常,将自动进行指定类型的异常类实例化处理。

2、如果程序没有提供异常处理的支持,则采用JVM默认异常处理方式,首先进行异常信息的打印,然后直接退出当前程序。

3、如果程序提供了异常处理的支持,则产生的异常类对象会被try语句捕获;

4、try捕获到异常之后会与其匹配的catch中的异常类型进行依次比对;如果此时与catch的捕获异常类型相同,则认为应该使用此catch进行异常处理,如果不匹配此继续匹配后续的catch类型,如果没有任何的catch匹配成功,那么表示该异常无法进行异常处理。

5、不管异常是否处理最终都要执行finally语句,但是执行完finally语句之后会进一步当前判断异常是否处理,如果处理过了,则继续向后执行其他代码,如果交由JVM进行默认的异常处理。

throw和throws的区别

throw:在代码块中使用,主要是手工进行异常对象的抛出。

throws:是在方法定义上使用的,表示将此方法中可能产生的异常明确告诉给调用处并由调用处进行处理。

throw语句抛出的不是异常类,而是一个异常实例对象,并且每次只能抛出一个异常实例对象。

throws用来是声明方法可能抛出的异常序列,throws只能在定义方法时使用,后面跟着异常类,而不是异常对象。

Collection和Map区别

Collection是单值集合操作的最大父接口,在该接口中定义所有的单值数据的处理操作。

Map接口是进行二元偶对象保存的最大父接口,主要用于存储二元偶对象(key=value),二元偶对象的核心意义在于通过key去获取value的值。

Collection集合保存数据的目的是为了输出;

Map集合保存数据的目的是为了进行key的查找。

List和Set区别

List集合允许重复数据,保存(增加)顺序就是存储顺序。

Set集合不允许重复元素,HashSet数据保存是无序的,TreeSet数据保存是有序的(数据都将安装数据的升序进行自动的排序处理)。Set集合并不像List集合那样扩充了很多新方法,所以无法使用List集合中提供的get()方法,即:无法实现索引数据的获取。

什么是字节流和字符流、输入流输出流

字节流:流的内容为0和1构成的二进制序列,这种流一般称为字节流,也称二进制流,无论是输入还是输出,直接对字节进行处理。

字符流:流的内容是字符,无论是输入还是输出,直接对字节进行处理。

输入流:只能从输入流中读取数据,而不能从输入流中写入数据。

输出流:只能从输入流中写入数据,而不能从输入流中读取数据。

各类组件

Icon图标

JButton按钮

JLable标签

JTextField单行文本框

JPasswordField密码框

JTextArea多行文本框

JRadioButton单选按钮

JCheckBox复选框:

JComboBox组合框:组合框是一个下拉式菜单,分为可编辑和不可编辑。

JList列表框:列表组件允许用户从一个列表中选择一个或多个项。

对话框

showMessageDialog:显示一条消息等待用户点击OK;

showConfirmDialog:显示一条消息并等待确认;

showOptionDialog:显示一条消息并等待用户在一组自定义选项中的选择;

showInputDialog:显示一条消息并等待用户的输入。

事件处理过程

  1. 创建事件源(按钮)
  2. 创建监听器
  3. 注册监听对象
  4. 响应过程
//(1)创建事件源(按钮)
JButton MyButton=new JButton("Java");
//(2)创建监听器 
MyActionListener listener=new MyActionListener();
//(3)注册监听对象
button.addActionListener(listener);
//(4)响应过程
public class MyActionListener implements ActionListener {
    public void actionPerformed(ActionEvent event) {
        //相应的响应操作
    }
}

不同布局管理器的特点

流式布局(FlowLayout):在容器中,从左到右依次放置GUI组件,当组件排到容器一行的末尾时,则从下一行开始接着排列组件。每行组件的对齐方式可以是: 左对齐、中间(默认对齐方式)和右对齐

边界布局(BorderLayout):将JFrame容器分成顶部、底部、左侧、右侧、中间五个区域,每个区域最多只能1个组件。

网格布局(GridLayout):将容器空间划分成若干行乘若干列的网格,组件依次放入其中,每个组件占据一格 。网格每列的宽(高)度都是相同的,这个宽度大致等于容器的宽度除以网格的列(行)数组件被放入容器的次序决定了它所占据的位置。每行网格从左至右依次填充,一行用完之后转入下一行。当容器的大小改变时,GridLayout所管理的组件的相对位置不会发生变化,但组件的大小会随之改变。

卡片布局(CardLayout):将容器中的组件处理为一系列卡片,每一时刻只显示出其中的一张 。

盒布局(BoxLayout):可以将容器中的组件按水平方向排成一行或按垂直方向排成一列,当组件排成一行时,每个组件可以有不同的宽度;当组件排成一列时,每个组件可以有不同的高度。

空布局(NULL):可以设置每个组件的位置和大小。

什么是线程?

线程是在进程的基础上划分的更小的运行单元,线程是在进程基础上创建并且使用的,所以线程依赖于进程的支持。但是线程的启动速度要比进程快许多,所以当使用多线程进行并发处理的时候,其执行性能要高于进程。

线程与进程的区别

  • 进程是运行中的程序,线程是进程的内部的一个执行序列
  • 进程是资源分配的单元,线程是执行行单元
  • 进程间切换代价大,线程间切换代价小
  • 进程拥有资源多,线程拥有资源少
  • 多个线程共享进程的资源

线程实现方式

  1. 继承Thread类,重写Thread类中的run()方法,直接创建线程。
  2. 实现Runnable接口,再通过Thread类和Runnable的实现类间接创建一个进程。
  3. 使用Callable和Future接口间接创建进程。(最大的优势在于可以在线程执行完任务之后获取执行结果)

线程的生命周期

在线程的生命周期中,线程要经过五种状态:

  1. 新建
  2. 就绪
  3. 运行
  4. 阻塞
  5. 死亡

猜你喜欢

转载自blog.csdn.net/qq_29537269/article/details/107052385
今日推荐