当前位置: 首页  - java面试资料  - 列表 君子好学 自强不息
java面试资料请说明final finally finalize的区别

请说明final finally finalize的区别

fifinal可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表 示该变量是一个常量不能被重新赋值。fifinally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法fifinally代码块 中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的

java面试资料请简述HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?

请简述HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?

HashMap结构图 在 JDK1.7 及之前的版本中, HashMap 又叫散列链表:基于一个数组以及多个链表的实现,hash值冲突的时候, 就将对应节点以链表的形式存储。 JDK1.8 中,当同一个hash值( Table 上元素)的链表节点数不小于8时,将不再以单链表的形式存储了,会被 调整成一颗红黑树。这就是 JDK7 与 JDK

java面试资料请说明HashMap 的扩容过程

请说明HashMap 的扩容过程

当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值(知道这个阈字怎么念吗?不念 fa 值, 念 yu 值四声)---即当前数组的长度乘以加载因子的值的时候,就要自动扩容啦。 扩容( resize )就是重新计算容量,向 HashMap 对象里不停的添加元素,而 HashMap 对象内部的数组无法装载更 多的元素时,对象就需

java面试资料HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程 环境下不安全)?

HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程 环境下不安全)?

不是线程安全的; 如果有两个线程A和B,都进行插入数据,刚好这两条不同的数据经过哈希计算后得到的哈希码是一样的,且该位 置还没有其他的数据。所以这两个线程都会进入我在上面标记为1的代码中。假设一种情况,线程A通过if判断,该 位置没有哈希冲突,进入了if语句,还没有进行数据插入,这时候 CPU 就把资源让给了线程B,线程A停在了if语句

用户登录