Java笔试题:HashMap与Hashtable对比、线程操作与更多
需积分: 7 86 浏览量
更新于2024-09-11
收藏 10KB TXT 举报
"Java程序员需要掌握的10个核心知识点"
1. **HashMap与Hashtable的区别**
- **HashMap** 是Java中的一个非同步容器,允许存储`null`键和值,而**Hashtable** 是线程安全的,不允许`null`键和值。HashMap允许线程并发访问,适合于多线程并行读取但不修改的情况,而Hashtable则适用于需要全局唯一性和线程安全的场景。
- HashMap是非同步的,性能优于Hashtable,但在多线程环境下,需要手动进行同步处理以确保数据一致性。
2. **sleep()与wait()的区别**
- **sleep()** 是Thread类的一个静态方法,它使当前线程暂停执行指定的毫秒数,不会释放锁。当时间到或者被中断时,线程会恢复运行。
- **wait()** 是Object类的一个方法,用于线程间通信。调用wait()的线程会释放当前持有的所有锁,并进入等待状态,直到其他线程调用相同对象的notify()或notifyAll()唤醒。wait()需要在同步块或同步方法中使用,否则会抛出IllegalMonitorStateException。
3. **Collection与Collections的区别**
- **Collection** 是Java集合框架的基础接口,代表了一组对象的集合,不包含任何元素类型,而**Collections** 是一个包含各种操作集合的工具类,提供了许多静态方法来实现对集合的操作,如排序、查找、转换等。
4. **异常处理中的assert**
- **assert** 语句用于断言某个条件是否为真,通常用于测试和调试代码。如果assert后面的表达式结果为`true`,则程序继续执行;如果为`false`,则抛出AssertionError异常。在默认情况下,assert是关闭的,需要通过启动参数开启。
5. **短路逻辑运算符&&与||**
- **&&** 是逻辑与运算符,如果第一个操作数为`false`,则不会评估第二个操作数,因为结果无论如何都是`false`。
- **||** 是逻辑或运算符,如果第一个操作数为`true`,则不会评估第二个操作数,因为结果无论如何都是`true`。
6. **final, finally, finalize**
- **final** 关键字用于声明不可改变的变量或不可继承的类,也可以用于方法,表示该方法不能被重写。
- **finally** 用于异常处理,无论是否发生异常,finally块中的代码都会被执行,保证了资源的正确释放。
- **finalize** 是Object类的一个方法,用于垃圾回收前执行清理操作。但是不建议依赖这个方法进行资源清理,因为其执行时机不确定且效率低。
7. **匿名内部类**
- 匿名内部类可以没有名称,可以直接实例化,可以是类或接口的实现。如果匿名内部类实现了接口,那么它就是一个实现了接口的所有方法的类;如果它扩展了类,那么它就是那个类的子类。
8. **Math.round()方法**
- Math.round()方法用于将浮点数四舍五入为最接近的整数。当浮点数大于等于0.5时,向上取整;小于0.5时,向下取整。对于正负浮点数,Math.round返回的都是long类型的结果。
9. **静态嵌套类(Static Nested Class)与内部类(Inner Class)**
- 静态嵌套类类似于普通的静态成员,不持有对外部类的隐式引用,可以独立存在。它们可以通过类名直接访问,无需外部类实例。
- 内部类是嵌套在另一个类内部的类,它可以访问外部类的私有成员。内部类实例需要外部类实例才能创建,不能声明为静态。
10. **ArrayList与Vector的区别**
- **ArrayList** 和**Vector** 都是基于数组实现的列表,但ArrayList是非线程安全的,性能较好,而Vector是线程安全的,但在多线程环境中性能较优,但通常不推荐使用,因为它的同步开销大。在单线程环境中,一般优先选择ArrayList。
2010-12-06 上传
2012-11-15 上传
2010-04-29 上传
2010-01-16 上传
2010-04-03 上传
2022-06-10 上传
2021-09-30 上传
茜sisy
- 粉丝: 0
- 资源: 4
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查