ITPub博客

首页 > IT职业 > IT职场 > java面试冷知识 String的线程安全和hashcode

java面试冷知识 String的线程安全和hashcode

IT职场 作者:snowmanjy 时间:2021-09-09 09:11:49 0 删除 编辑
线程安全性

        说道有关string的线程安全性,大家想到的肯定时stringbuffer和stringbuilder。现在问一句string的大家就可能突然发蒙。

        首先string是线程安全的,很多人给了一个啼笑皆非的原因,因为string类是final的……这个final的作用也就是不能继承,和线程安全性貌似没有关系。主要原因是string内部存储字符串的char数组以及和char数组相关的信息都是final的,这就保证了string对象生成的那一刻他在内存里就是不可变的。

hashcode

        很多人说自己看过java源码,估计这个是个盲点,知道了感觉确实用处不大,不过见还真有人问,这里就简述一下。

        他的主要算法就是

    public int hashCode() {
        int h = hash;
        if (h == 0 && value.length > 0) {
            char val[] = value;

            for (int i = 0; i 

代码并不难,用数学公式推导一下就是:

   hashcode =  s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1];

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1973/viewspace-2800352/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 多表连接查询
请登录后发表评论 登录
全部评论

注册时间:2019-04-16

  • 博文量
    104
  • 访问量
    826