Java基础面试题解析:从包装类到多线程

需积分: 9 0 下载量 144 浏览量 更新于2024-09-09 收藏 221KB PDF 举报
"Java基础面试题涵盖了核心概念和常见的编程挑战。" 在Java面试中,了解和掌握基础概念是至关重要的。以下是一些基于给定信息的重要知识点: 1. **Hashtable原理与HashMap与Hashtable的区别** - `Hashtable` 是一个古老的同步容器,它基于散列表实现,使用散列函数来确定元素的存储位置。插入和查找操作的时间复杂度通常为O(1)。 - `HashMap` 类似于`Hashtable`,但它是非同步的,允许空键和空值。它同样使用散列策略,但在并发环境下需要手动同步或使用`ConcurrentHashMap`。 - 区别在于:`Hashtable`是线程安全的,而`HashMap`不是;`Hashtable`不接受null键和值,`HashMap`可以。 2. **抽象类与接口的区别** - 抽象类是部分实现的类,可以包含抽象方法(没有实现的方法)和具体方法。一个类只能继承一个抽象类。 - 接口只包含方法签名(没有实现),可以被一个类多实现(多重继承)。接口的字段默认是`public static final`。 3. **集合类与数组** - 集合类如ArrayList、LinkedList等提供动态增长的能力,不需要预先指定大小,且提供了更多的操作如排序、查找等。 - 数组是固定大小的,适用于已知元素数量且不需要频繁改变大小的情况。可以使用Collections静态方法对数组进行排序。 4. **包装类** - Java的六个包装类对应于基本数据类型,提供方便的类型转换和额外的实用方法。例如,`Integer`提供了将字符串转换为整数的`parseInt()`方法。 - 装箱(Boxing)是将基本类型自动转换为包装类,拆箱(Unboxing)则是反之。包装类的对象一旦创建,其值就不能改变。 5. **创建线程的两种方式** - 实现`Runnable`接口:创建一个类实现`Runnable`,然后将其实例传递给`Thread`构造器来创建线程。 - 继承`Thread`类:直接扩展`Thread`类并重写`run()`方法,创建类的实例并调用`start()`启动线程。 6. **Java编程:打印昨天的当前时刻** - 示例代码使用`Calendar`类获取昨天的日期。`getInstance()`获取当前时间,`add(Calendar.DATE, -1)`将日期回溯一天,`getTime()`返回日期时间对象并打印。 7. **程序运行结果(未给出完整代码)** - 如果代码是`class A { }`,这是一个没有任何方法或变量的空类,因此运行结果没有输出。 以上知识点对于Java初学者和面试者来说都是基础且重要的,理解并能熟练应用这些概念是成为一名合格Java开发者的关键。在面试中,深入理解并能够解释这些概念会展示出良好的编程基础。