复习

HashMap和HashTable的区别

  • HashMap允许null作为键值,而HashTable不允许;
  • HashMap不是线程安全的,HashTable是线程安全的。

HashMap的实现原理

  • HashMap是基于Map的非同步的实现,允许null作为键和值,无序,是一种“散列链表”的数据结构(数组+链表)
  • HashMap的存储
    • 计算KEY的哈希值;
    • 判断哈希值是否与数组中元素的哈希值相同,
      • 如果相同,再根据equals()判断KEY对象是否已存在,
        • 如果存在,覆盖VALUE值,KEY值不会覆盖;
        • 如果不存在,在此元素上形成链表,新加的对象位于链表的头部(可解决HASH冲突的问题)。
  • HashMap的读取
    • 先根据哈希码值读取元素在数组中的存储位置
    • 再通过equals()方法获取相同KEY的VALUE值
  • resize(扩容)
    • 当数组中的大小超过0.75 * 初始容量的时候,就会进行resize
    • 原因:当HashMap中的元素越来越多的时候,碰撞几率就会增大,为了增强查询效率,就需要resize

初始化HashMap的时候,需要指定初始长度吗?

可以指定,也可以不指定,不指定的时候,默认初始长度为16,当HashMap中的长度超过12的时候,就会resize,这时就会重新计算hash保证散列的均匀性,频繁的resize的代价是很高的,所以建议在可以估量HashMap大小的时候给定一个初始值(2的幂)

Java多态的表现形式

  • 重载(overload)
    • 同一类中,方法名相同,参数类型,参数顺序,参数个数不同
  • 重写(override)
    • 子类中对父类方法的覆盖,方法名和参数完全相同,访问权限要大于等于父类的访问权限,不能抛出比父类方法更多的异常,可以不抛出异常

java类的初始化过程

  • 初始化父类静态成员变量,子类静态成员变量
  • 初始化父类静态代码块,子类静态代码块
  • 初始化父类普通成员变量,初始化父类构造方法
  • 初始化子类普通成员变量,初始化子类构造方法

数据库连接池的工作机制

  • JavaEE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接.客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其标记为忙.如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量由配置参数决定;
  • 当使用的池连接调用完成后,池驱动程序将此连接标记为空闲,其他调用就可以使用这个连接。

开发中使用泛型代替非泛型的数据类型,程序的运行性能会变得更好

这句话是错误的,泛型仅仅是一颗语法糖,在编译阶段,虚拟机会把泛型擦除,所以运行性能是没有改变的,顶多编译速度慢一些。

接口不能实现接口,可以继承不止一个接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值