当前位置: 首页 > news >正文

手机网站电话漂浮代码微信 分享网站开发

手机网站电话漂浮代码,微信 分享网站开发,西部域名网,深圳有几个区地图1、典型回答 浅层次的来回答这个问题的答案是,JDK 源码不支持 Hashtable 插入 value 值为 null,如以下 JDK 源码所示: 也就是 JDK 源码规定了,如果你给 Hashtable 插入 value 值为 null 就会抛出空指针异常。 并且看上面的 JDK …

1、典型回答

浅层次的来回答这个问题的答案是,JDK 源码不支持 Hashtable 插入 value 值为 null,如以下 JDK 源码所示:

也就是 JDK 源码规定了,如果你给 Hashtable 插入 value 值为 null 就会抛出空指针异常。

并且看上面的 JDK 源码可以得出结论,如果 key 也为 null 的时候,因为 null 没有 hashCode 所以它也会报空指针异常,如下图所示:

2、考点分析

简单来说,Hashtable 之所以 key 不允许为 null,和 value 不允许为 nul 的原因是,JDK 源码级别做了限制,如果 Hashtable 的 key 或者 value 为 null 就会报空指针异常。

3、知识扩展

但是,我们看 JDK 源码不难发现,这些判断和错误 Hashtable 完全可以在后续的 JDK 版本中修复和调整代码,可以让其支持 key 和 value 都为 nul,为什么它没有修复这个问题呢?

深层次的原因就是,设计的 Hashtable 是在多线程下使用的,而如果 Hashtable 的 key 或 value 允许为 null 的话,那么程序就会存在二义性问题。

什么是二义性问题?

所谓的二义性问题是指含义不清或不明确。

如果我们假设 Hashtable 允许插入 null,那么此时它就会有二义性问题,这个 nu! 值就有两层含义

  1. 这个 key 不存在,所以返回 null。
  2. key 存在,并且值本身就为 nul,所以返回的就是 null。

而在多线程下,你没有办法证明真伪,因为你在判断证明的时候,其他线程可能同时做了修改,所以不能被证明的二义性问题需要从源头上杜绝,所以多线程下的 Hashtable 是不允许 key 和 value 插入 nu 值的。

ConcurrentHashMap 也是不允许插入 null,原因和 Hashtable 是一样的(因为有二义性问题)

为什么 HashMap 允许插入 null 值?

因为 HashMap 设计是在单线程下使用的,而单线程可以证明真伪,它在进行查询判断的时候,不用担心有其他线程对这个值同时做修改,所以它不存在二义性问题,所以 HashMap 允许 key 和 value 都为 null。

http://www.yayakq.cn/news/141529/

相关文章:

  • 成都青羊建设厅官方网站做网站时遇到的问题
  • 怎么做离线网站全国二级建造师注册查询系统入口
  • 百度云盘做网站空间系统开发外包
  • 网站推广具体内容网站建设服务范围
  • PHP网站开发简单实例陕西建设网综合综合服务中心
  • 针对人群不同 网站做细分广告设计要学什么
  • 余姚网站建设开发小程序模板是什么意思
  • 建设一个网站需要哪些人员参与前端可以自己做网站么
  • 4s店建设网站的目的买个机器在家搞加工
  • 专业网站建设企业东莞网页设计与制作教程
  • 宝应seo优化公司seo观察网
  • 珠海网站建设推广方案南昌企业建站系统模板
  • 南通网站建设论文互联网服务商
  • 广东网站建设哪家有新网站关键词怎么优化
  • 动漫网站开发设计思想网站开发研究手段有哪些
  • 网站商城支付宝开通怎么做邯郸做网站最好的公司
  • 重庆网站建设与网络推广博主怎么赚钱
  • 南平市建设局网站wordpress推送服务器
  • 网站怎么静态化购门户网站系统
  • 手机建立网站鲜花网站建设店
  • 自动登录网站的小程序炫酷网页html代码
  • 网站建设违法行为企业网站建设后期维护费用
  • 宜飞思工业设计网站广州做seo公司
  • 教育网站设制下载手机端网站建设的费用清单
  • 前端微信公众号开发专业seo优化外包
  • 临海市城市建设规划局网站物流公司网站设计
  • 住房城乡建设干部学院网站wordpress主题慢
  • 为什麼建网站要先做数据库济南房产网安居客
  • 官方网站找做化妆品套盒子网站建设涉及到哪些方面
  • 高端企业网站建站韶关网站seo