短问答

这里会列举一些 Java 知识的相关问答。答案不会超过 4 句话,答案超过 4 句话的问题不会出现在这里。

该文档会不定期更新,欢迎提出宝贵意见并扩充。


线程和进程的区别是什么?

进程是资源分配的基本单位,具有独立的空间地址,进程中包含线程并为其提供共享资源。

线程是 CPU 独立运行和独立调度的基本单位,线程必须依赖于进程而存在。

 

什么是加载因子?

加载因子=Hash 表中已经使用的容量/Hash 表总容量,是表示 Hash 表中元素的填满程度。

Java 中 HashMap 默认加载因子 0.75,表示加载因子到达 0.75 时,会对 HashMap 扩容,以此减少冲突。

 

一个 Java 文件中能定义几个类?

一个 Java 文件中可以包含多个类,但只能有一个 public 类,且文件名必须和 public 类一致。

 

什么是标识接口,有什么作用?

如果一个接口没有任何方法和属性则称为标识接口,Java 中 Cloneable 和 Serializable 接口就是标识接口。

实现标识接口就等于给该类打上了一个标签,通过 instanceof 运算符来识别该类是否拥有某个标签,实现某些逻辑判断。

 

class.forName 有什么作用?

装载类,把类的字节码读入内存,产生一个 java.lang.Class 类对象。初始化类信息,执行这个类的 static 块。

 

HashMap 与 TreeMap 的区别是什么?

TreeMap 是 SortedMap 接口基于红黑树的实现,默认会对键进行排序,所以键必须实现自然排序和定制排序中的一种 。HashMap 是根据键的 HashCode 值存储数据,取得数据的顺序是完全随机的,HashMap 取值的速度更快。

 

List<String> 能否转为 List<Object>?

不能。因为可能会产生隐含的类型转换问题,因此编译器直接就禁止这样的行为。

 

Java 中 Error 与 Exception 有什么区别?

Error 类和 Exception 类都继承自 Throwable 类。Exception 由程序导致的错误,可以捕获后处理。

Error 的错误一般和 JVM 相关的,例如内存不足,系统崩溃之类的问题,靠程序本身无法恢复,建议程序终止。

 

ArrayList 和 LinkedList 之间如何选择?

数组容量固定,变化不大的情况下,使用 ArrayList,通过索引即可访问,效率高,但插入和删除元素涉及到扩容操作,效率低。

数组长度不定,频繁插入删除操作,使用 LinkedList,因为双向链表插入删除很方便,但访问元素时需要从头遍历,效率低。

 

List<Integer> 如何转换成 Integer[]?

使用 toArray 方法。

 

List<Integer> 如何转换成 int[]?

不能使用 toArray 方法。可使用 Apache Commons Lang 库下的 ArrayUtils 工具类。或者用 for 语句手动实现。

 


发表评论

邮箱地址不会被公开。 必填项已用*标注