String知识点整理

科技资讯 投稿 5700 0 评论

String知识点整理

    intern方法也是类似处理。

  1. new String的方式创建,或者使用+拼接变量时,JVM都会重新创建一个新对象。

    String s1 = "1";
    String s2 = s1 + "2";
    

    因为s1是引用变量,JVM在编译期不能确定s1的值,所以会在堆中新创建一个对象指向s2。如果s1加个final限制,让s1就能在编译阶段确定下来,它就是常量,因此在编译时,s1 + "2"就会被优化成12。

String为什么不可变

不能被继承;未提供能改变它状态的公共方法;它的工具方法都是返回一个新的字符串。

String不可变有什么好处

  • 因为不可变,所以是线程安全的。

  • HashMap的Key。String的hashCode方法在第一次调用的时候会缓存它的hash值,再次调用的时候无需再次计算了。关于这一点,我们去看它的源码就会一目了然:将hash函数的计算结果赋值给String的成员变变量hash,第二次计算就能直接返回。从这里可以看出,从HashMapHashSet等使用hash函数计算元素位置的集合中查找一个元素是非常快的。

编程笔记 » String知识点整理

赞同 (34) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽