Java知识点梳理
文章平均质量分 57
梳理Java中容易混淆或者难理解的知识点,记录梳理过程,自我提升
程序员小赵同学
大道至简,盘古生其中。
展开
-
ConcurrentHashMap的扩容机制
因为ConcrrentHashMap在jdk1.7和1.8中的实现机制不一样,所以要分开讲解;JDK1.7中使用segment分段锁实现,1.8中使用CAS+Synchronized实现了更细粒度的锁;原创 2023-09-21 17:01:34 · 718 阅读 · 0 评论 -
ArrayList和LinkedList的区别
ArrayList底层是一个数组,内容是规整的,可以指定数组容量。如果没有指定数组容量,默认容量是10插入新元素的时候会判断容量,若容量不足以插入新元素。就会进行扩容。扩容是通过新建一个新的更大的数组来完成的,将原数组中的值复制到新数组,再添加新值。扩容后原数组后续就会被垃圾回收掉。要设置一个合理的初始容量;1、如果设置容量太小,频繁扩容对资源消耗是很大的。2、如果设置容量过大,会浪费很多空间。ArrayList查询效率。原创 2023-09-12 13:56:39 · 617 阅读 · 0 评论 -
==和equals的区别
如上,我们之所以平时觉得equals是代表值相等,就是String默默重写了equals方法,从而让我们产生了错觉。所以如果我们调用了Object中的equals方法进行比较,又没有进行重写,其实就相当于使用==进行比较。所以,如果我们自定义的对象要做比较,需要重写equals方法来定义比较规则,否则就是按照==进行比较。我们平时用到最多的应该就是String类的equals方法;下面的代码就是Object类的源码;引用类型比较的是堆内存中的对象地址。==其实是比较的栈中的值;基本数据类型比较的是数值。原创 2023-09-11 20:43:48 · 248 阅读 · 0 评论