加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 交互 > 正文

40道Java基础常见面试题及详细答案

发布时间:2020-12-31 19:06:19 所属栏目:交互 来源:网络整理
导读:最近看到网上流传着各种面试经验及面试题,往往都是一大堆技术题目贴上去,但是没有答案。 为此我业余时间整理了40道Java基础常见的面试题及详细答案,望各路大牛发现不对的地方不吝赐教,留言即可。 八种基本数据类型的大小,以及他们的封装类 引用数据类型
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1
<div class="line number2 index1 alt1">2
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="java keyword">static?<code class="java keyword">int?<code class="java plain">indexFor(<code class="java keyword">int?<code class="java plain">h,?<code class="java keyword">int?<code class="java plain">length) {

? Hashtable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

JDK7中的HashMap

HashMap底层维护一个数组,数组中的每一项都是一个Entry。

[] table;
我们向 HashMap 中所放置的对象实际上是存储在该数组当中。 而Map中的key,value则以Entry的形式存放在数组中。

??? { ? next; ? 总结一下map.put后的过程:

当向 HashMap 中?put 一对键值时,它会根据 key的 hashCode 值计算出一个位置, 该位置就是此对象准备往数组中存放的位置。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

HashTable Synchronize同步的,线程安全,HashMap不允许空键值为空?,效率低。 HashMap 非Synchronize线程同步的,线程不安全,HashMap允许空键值为空?,效率高。?Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现,它们都是集合中将数据无序存放的。

Hashtable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。

查看Hashtable的源代码就可以发现,除构造函数外,Hashtable的所有 public 方法声明中都有 synchronized 关键字,而HashMap的源代码中则连 synchronized 的影子都没有,当然,注释除外。

2、Hashtable不允许 null 值(key 和 value 都不可以),HashMap允许 null 值(key和value都可以)。

3、两者的遍历方式大同小异,Hashtable仅仅比HashMap多一个elements方法。

?
? 4、HashTable使用Enumeration,HashMap使用Iterator

从内部机制实现上的区别如下:

  1. 哈希值的使用不同,Hashtable直接使用对象的hashCode
? 而HashMap重新计算hash值,而且用与代替求模:

? ?? ? >>? >>? ? <div class="cnblogs_Highlighter sh-gutter">
<div id="highlighter_415506" class="syntaxhighlighter java">
<table border="0" cellspacing="0" cellpadding="0">