源码中的知识点
心海珈蓝
这个作者很懒,什么都没留下…
展开
-
科普:为什么 String hashCode 方法选择数字31作为乘子
科普:为什么 String hashCode 方法选择数字31作为乘子1. 背景2. 选择数字31的原因3. 实验及数据可视化 1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法。然后大致看了一下 hashCode 的实现,发现并不是很复杂。但是我从源码中发现了一个奇怪的数字,也就是本文的主角31。这个数字居然不是用常量声明的,所以没法从字面意思上推断这个数字的...转载 2019-02-21 17:36:17 · 247 阅读 · 1 评论 -
String源码中的“avoid getfield opcode”是什么意思
avoid getfield opcode其实是一段注释,看代码时不理解,就查了查在这记录一下。下面是一段String源码示例: 这个“avoid getfield opcode”字面意思是:避免getfield操作。那么首先需要知道什么是getfield操作。查《深入理解java虚拟机》得: 现在有些理解了,String源码中避免的就是“获取指定类的实例域,并将其值压入栈顶”的操作。所以现在...转载 2019-03-05 17:48:01 · 396 阅读 · 0 评论