1. 抽象类与接口的区别?
- 抽象类只能用extends继承,一个类只能有一个直接父类;而接口既能用extends继承又能被implements实现,一个类可以直接实现多个接口。(重点)
- 接口里只能定义公共的静态常量(默认public static final修饰);抽象类可以定义突通变量。(变量)
- 接口只能有方法声明,不能有方法实现(可以包含抽象方法和默认方法);抽象类既能有方法声明又能有方法实现。(方法)
- 接口里不能包含构造器;抽象类里可以包含构造器(抽象类的构造器并不是用于创建对象,而是让其子类独爱用这些构造器来完成属于抽象类的初始化操作)。(构造器)
- 接口用interface关键字修饰(替换class关键字);抽象类用abstract关键字修饰(在class关键字前增加)。(关键字)
**补充:**接口体现的是规范和标准,而抽象类更多的是设计方面。
相同点:(有得有失)
1 .接口和抽象类都不能被实例化。 - 接口和抽象类都可以包含抽象方法。
2. 异常处理机制简单说一下?
Java的异常处理机制主要依赖于try、catch、finally、throw和throws五个关键字。其中
try关键字后紧跟一个花括号,里面存放可能引发异常的代码。
catch关键字后小括号内设置异常类型,后面的花括号内设置用于处理该类型异常的代码快。
finally关键字用于回收try块里打开的物理资源,异常机制保证这部分代码总被执行。
throw关键字用于抛出一个实际的异常,可单独作为语句使用。
thows关键字主要在方法声明中使用,用于声明该方法可能抛出的异常。
补充:throw和throws关键的区别?
3.常见异常有哪些?
IndexOutOfBoundsException 数组越界异常
NumberFormatException 数字格式异常
ArithmeticException 数学运算异常
NullPointerException 空指针异常
StackOverflowError 堆栈溢出错误(当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。)
IllegalArgumentException 方法的参数异常
ClassNotFoundException 指定的类不存在
4. 什么是java序列化?如何实现序列化?实现序列化有什么好处?
1). 序列化就是将对象的内容进行流化,从而对流化的对象进行操作(读或写)。
2). 首先,将需要序列化的类实现Serializable接口,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),如果需要恢复的话则使用输入流。
3). 利用序列化可以实现对象的远程通信(在网络上传送对象的字节序列)和数据的持久化(把数据永久地保存到硬盘上,一般保存在文件上)。
5.什么使java反序列化?
反序列化就是将序列化后的字节序列恢复为对象的过程。
6. 进程与线程的区别?
1). 进程之间不能共享内存,但线程之间共享内存非常容易。
2). 系统创建进程时需要重新分配系统资源,但创建线程则代价小得多。
3). 进程是系统进行资源分配和调度的一个独立单位;线程是处理器调度的基本单元。
4). 线程是进程的执行单元。
7.创建线程有哪些方式?
8.什么是线程安全?
9.什么是死锁?解决死锁的方式有哪些?
10.mysql的三大范式是什么?
11.事务的四大特性?和三大隔离级别?
12.左连接与右连接的区别?
明天继续总结、补充。。。。。。。。。。