1.ArrayList,Vector,LinkedList的区别
ArrayList | Vector | LinkedList | |
实现原理 | 数组 | 数组 | 双向链表 |
线程安全 | 否 | 是 | 否 |
优点 | 1.数组实现优于遍历 | 1.数组实现优于遍历 | 1.节点的增删无需对象的重建 |
缺点 | 1.非线程安全 | 1.数组中未使用的元素造成空间的浪费 | 1.遍历效率较低 |
扩容 | 0.5倍增量 | 1倍增量 | 按需增删 |
使用场景 | 1.无线程的要求。 | 1.有线程安全的要求 | 增删场景较多的时候 |
2.int与Integer的区别
| int | Integer |
类型 | 基本类型 | 复合类型 |
默认值 | 0 | null |
存储 | 栈(局部变量) | 堆上(只能通过new创建) |
方法 | 基本类型无方法 | 有 |
速度 | 快(栈上 的操作相对快) | 慢 |
泛型支持 | 否(java中的泛型不支持,C++中的模板支持) | 支持 |
容器类支持 | 否(直接使用通常会进行装箱操作) | 支持 |
存在意义 | 1.历史原因(顺延C/C++中存在) | 基本类型int的包装类 |
3.RuntimeException与普通异常,error的区别
Checked Exception:在编译时就能够被Java编译器所检测到的。
UncheckedException:则是编译时,java编译器不能检查到。
| RuntimeException | 普通Exception | Error |
受控异常 | 否 | 是 | 否 |
产生原因 | 开发者的编程错误 | 由于外界环境所限, | Java运行时的系统错误,资源耗尽,是一种严重的, |
例子 | NullPointerException | ClassNotFoundException | VirtualMachineError |
4.final,finalize,finally的区别
(1) final:
- 方法:方法不可Override
- 类:不可被继承
- 基本类型量:常量,值不可变
- 符合类型量:引用不可变,即引用的值不可变
- final Object o1 = new Object();
- o1 = new Object();
- (2) finally:
- Java异常处理机制的一部分,在异常发生时,用来提供一个必要的清理的机会。
- (3)finalize:
- Object类的方法
- 意义:Java技术允许使用finalize()方法在垃圾回收器将对象回收之前,做一些必要的清理操作。
- 调用前提:这个对象确定没有被引用到。
- 工作原理:垃圾收集器准备好释放对象占用的空间。首先调用其finalize方法。下一次垃圾收集过程中,真正回收内存。
- 不确定性:finalize的执行时间是不缺定的。
- 一个对象引用另一个对象,并不能保证finalize的方法按照特定的执行顺序。
| wait | sleep |
所属类 | Object | Thread |
意义 | 让线程挂起 | 让线程休眠指定的时间 |
释放锁 | 是 | 否(这个跟锁本来就没有关系) |
恢复 | 1.有参:wait指定时间 | 1.根据参数长度自动恢复。 |
使用限制 | wait,notify必须持有当前对象锁的情况下调用 | 无特别 |
抛出异常 | 否 | 是 |
静态方法 | 否 | 是 |