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必须持有当前对象锁的情况下调用 |
无特别 |
抛出异常 |
否 |
是 |
静态方法 |
否 |
是 |