Java面试精华:深入理解final, finally, finalize及核心概念对比

需积分: 4 8 下载量 171 浏览量 更新于2024-10-22 收藏 33KB DOC 举报
Java面试题是一系列关于Java编程语言的重要知识点和概念,旨在评估面试者的编程基础、设计模式理解和问题解决能力。以下是一些关键点的详细解释: 1. **final, finally, finalize的区别**: - `final` 是Java中的修饰符,用于声明常量(final变量)、不可变对象(final类和final字段)或方法(final方法)。常量一旦赋值就不可更改,方法则表示方法体不可被重写。 - `finally` 是在`try-catch-finally`语句块中的关键字,确保无论是否发生异常,程序总会执行这部分代码,通常用于释放资源,如关闭数据库连接或文件流。 - `finalize()` 是Java对象生命周期中的一个特殊方法,当垃圾回收器确定一个对象不再被引用且可以被回收时,会调用`finalize()`,用于执行清理工作,例如关闭打开的资源。 2. **Anonymous Inner Class (匿名内部类)**: - 匿名内部类允许在定义时直接创建并实例化一个类,无需为其命名。它可以继承自其他类或实现多个接口。 3. **& 和 && 的区别**: - `&` 是位运算符,用于按位与运算,将两个操作数的二进制位逐位进行比较,如果都是1则结果为1,否则为0。 - `&&` 是逻辑运算符,表示“与”逻辑,只有当两个操作数都为真(非零或非false)时,结果才为真。 4. **HashMap 和 Hashtable 的区别**: - `HashMap` 是线程不安全的,但性能较高,允许空键值对,且插入和查找操作相对较快。 - `Hashtable` 是线程安全的,但性能较低,不允许空键值对,并且在并发环境下可能会有性能瓶颈。 5. **Collection 和 Collections 的区别**: - `Collection` 是Java集合框架的顶级接口,包含了所有集合类型的基本特征,如List和Set。 - `Collections` 是一个工具类,提供了方便的操作各种集合的静态方法,如排序、搜索、线程安全化的辅助功能。 6. **Garbage Collection (GC)**: - GC 是Java内存管理的一部分,负责自动回收不再使用的内存,以防止内存泄漏。程序员可以通过`System.gc()`请求一次垃圾收集,但并非总能立即执行。 7. **Math.round() 方法**: - `Math.round()` 方法用于四舍五入到最接近的整数。`Math.round(11.5)` 返回12,`Math.round(-11.5)` 返回-11,注意它返回的是long类型。 8. **short类型运算错误**: - `shorts1=1;s1=s1+1;` 有错,因为短整型加1会自动转换为整型,不能直接赋值给short,应改为`(short)(s1+1)`。 - `shorts1=1;s1+=1;` 正确,这是隐式类型转换,没有转换问题。 9. **sleep() 和 wait() 的区别**: - `sleep()` 是让当前线程暂停执行指定时间,线程状态变为阻塞。 - `wait()` 是线程在满足特定条件后主动放弃执行,进入等待状态,直到被唤醒。 掌握这些Java面试题的核心知识点,对于理解Java编程语言的基础特性和内存管理至关重要,同时也展示了面试者对面向对象编程、数据结构和并发控制的理解程度。