Java面试必备:final,finally,finalize解析与笔试题集锦

下载需积分: 9 | DOC格式 | 298KB | 更新于2024-07-20 | 21 浏览量 | 0 下载量 举报
收藏
"Java面试和笔试题集合,涵盖了final、finally、finalize的使用区别,匿名内部类的继承和实现,静态嵌套类与内部类的差异,逻辑运算符&和&&的区别,HashMap与Hashtable的区别,Collection与Collections的区别,assert的使用场景,垃圾回收(GC)的概念及其与finalize的关系,以及Math.round()方法的使用示例。" 1. **final, finally, finalize的区别**: - `final` 是一个修饰符,用于声明不可变的类、变量或方法。当一个类被声明为final,它不能有子类。变量声明为final后,其值无法改变。 - `finally` 在异常处理中扮演关键角色,无论是否发生异常,finally块中的代码总会被执行,确保清理操作得以完成。 - `finalize` 是一个在Object类中定义的方法,用于在对象被垃圾收集器清除前执行特定清理工作。但不应依赖此方法进行资源释放,因为垃圾收集时机不确定。 2. **匿名内部类**: - 匿名内部类可以直接继承一个类或实现一个或多个接口,但它们没有名称,通常用在需要简洁实现且仅使用一次的场合。 3. **StaticNestedClass与Inner Class**: - 内部类(Inner Class)是嵌套在另一个类内部的类,它可以访问外部类的所有成员,包括私有成员。而静态嵌套类(Static Nested Class)像普通静态成员一样,不持有对外部类的引用,除非显式引用。 4. **& 和 && 的区别**: - `&` 是按位与运算符,而在布尔表达式中,它也用于逻辑与,无论两边表达式如何,都会计算两边。 - `&&` 是短路与运算符,如果左侧表达式为假,右侧表达式不会被计算,这可以避免不必要的计算和潜在的异常。 5. **HashMap与Hashtable的区别**: - HashMap是非同步的,而Hashtable是线程安全的。 - HashMap允许null键和值,而Hashtable不允许。 - HashMap使用了迭代器(Iterator),而Hashtable使用了Enumeration。 6. **Collection与Collections的区别**: - Collection 是所有集合框架接口的根接口,代表一组元素集合。 - Collections 是一个工具类,提供了一系列静态方法,用于对各种集合进行操作,如排序、搜索、填充等。 7. **assert的使用**: - assert 用于在开发阶段进行断言,检查程序的某些假设是否正确。在生产环境中默认关闭,可以通过 `-ea` 参数开启。 8. **GC(垃圾回收)**: - 垃圾回收是Java自动管理内存的过程,负责回收不再使用的对象,以避免内存泄漏。`System.gc()` 可以手动触发垃圾回收,但不推荐,因为其性能影响和回收时机的不确定性。 - 在垃圾回收前,Java会尝试调用对象的 `finalize()` 方法。 9. **Strings=new String("xyz"); 创建了多少个String Object?** - 创建了两个String对象,一个在常量池,一个在堆中,因为字符串字面量 "xyz" 存在于常量池,而 `new String("xyz")` 会在堆上创建一个新的对象。 10. **Math.round(11.5) 和 Math.round(-11.5)的结果**: - `Math.round(11.5)` 返回 12,因为round方法会四舍五入到最接近的整数。 - `Math.round(-11.5)` 返回 -11,同样遵循四舍五入规则,但负数会朝向更小的整数方向四舍五入。

相关推荐