💡
原文中文,约13800字,阅读约需33分钟。
📝
内容提要
Java中的Exception和Error都是Throwable的子类。Exception是可预料的异常,需捕获处理;Error是不可恢复的错误,通常不需捕获。Exception分为可检查和不可检查异常,前者在编译时需处理。Java引入了try-with-resources等特性简化异常处理。final、finally和finalize各有不同用途:final修饰类、方法和变量,finally确保代码执行,finalize用于资源回收。
🎯
关键要点
- Java中的Exception和Error都是Throwable的子类。
- Exception是可预料的异常,需捕获处理;Error是不可恢复的错误,通常不需捕获。
- Exception分为可检查异常和不可检查异常,前者在编译时需处理。
- Java引入了try-with-resources等特性简化异常处理。
- final、finally和finalize各有不同用途:final修饰类、方法和变量,finally确保代码执行,finalize用于资源回收。
- final修饰的类不可继承,变量不可修改,方法不可重写。
- finally确保代码块中的代码一定会被执行。
- finalize方法用于对象被垃圾收集前的资源回收,但已不推荐使用。
- Java中有强引用、软引用、弱引用和幻象引用,分别影响对象的可达性和垃圾收集。
- String是不可变类,StringBuffer是线程安全的可变类,StringBuilder是非线程安全的可变类。
- 动态代理基于反射机制,允许在运行时动态构建代理。
- int是原始数据类型,Integer是其包装类,支持自动装箱和拆箱。
- Vector是线程安全的动态数组,ArrayList是非线程安全的动态数组,LinkedList是双向链表。
- Hashtable是同步的哈希表,HashMap是非同步的哈希表,TreeMap是基于红黑树的有序Map。
- ConcurrentHashMap通过分离锁实现高效的线程安全。
- BlockingQueue是线程安全的队列,支持阻塞操作。
- ArrayBlockingQueue是基于数组的有界阻塞队列,遵循先进先出原则。
❓
延伸问答
Java中的Exception和Error有什么区别?
Exception是可预料的异常,需捕获处理;Error是不可恢复的错误,通常不需捕获。
什么是可检查异常和不可检查异常?
可检查异常在编译时需处理,而不可检查异常通常是运行时异常,不强制要求捕获。
final、finally和finalize有什么不同?
final用于修饰类、方法和变量,finally确保代码执行,finalize用于资源回收但已不推荐使用。
Java中强引用、软引用、弱引用和幻象引用有什么区别?
强引用不允许对象被回收,软引用在内存不足时可被回收,弱引用在下一次垃圾回收时可被回收,幻象引用用于对象被回收后的清理。
String、StringBuffer和StringBuilder有什么区别?
String是不可变类,StringBuffer是线程安全的可变类,StringBuilder是非线程安全的可变类。
ConcurrentHashMap是如何实现线程安全的?
ConcurrentHashMap通过分离锁的机制提高并发性能,允许多个线程同时访问不同的段。
➡️