
java学习笔记
NeoJoe
人生没有闲,只有临阵逃脱
展开
-
静态代码块、非静态代码块、构造方法的执行顺序
总结:在外部调用静态方法时,可以使用”类名.方法名”的方式,也可以使用”对象名.方法名”的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),注意图一,调用静态方法时只执行了静态代码块和静态方法,而不允许访问实例成员变量和实例方法;实例方法则无此限制static{}静态代码块与{}非静态...原创 2019-05-07 09:19:07 · 1646 阅读 · 0 评论 -
【Java】HashMap中的tableSizeFor方法
在HashMap中数据是存储在哈希表中的,实际上就是一个一维数组,而哈希表的大小总是是二的整数幂,这是因为在HashMap的resize()方法也就是扩容中,对于其所形成的链表的移动是以当前哈希表数组的下标值加上原来数组长度作为扩容后的数组下标,那么其最大取值就是原来数组的两倍大小,又因为其默认的初始大小是16,故该哈希表的大小总是2的整数幂。所以在HashMap中给出了一个计算大于等于当前数值的...转载 2019-05-07 13:40:12 · 649 阅读 · 1 评论 -
HashMap中初始化大小为什么是16? 为什么链表的长度为8是变成红黑树?为什么为6时又变成链表?
一HashMap中初始化大小为什么是16?首先我们看hashMap的源码可知当新put一个数据时会进行计算位于table数组(也称为桶)中的下标:int index =key.hashCode()&(length-1);hahmap每次扩容都是以 2的整数次幂进行扩容比如:十进制:11 0001 0010 0110 0010二进制:2...转载 2019-07-09 09:24:06 · 1150 阅读 · 1 评论