首页 > 其他 > 详细

String为什么是final的

时间:2020-11-28 19:49:00      阅读:38      评论:0      收藏:0      [点我收藏+]

原因


  总的来说是为了:"效率",“线程安全”,和“共享”。

因为final不允许被继承,而String是被高度使用的,如果String允许被继承,会降低程序的性能。

  • 为了不可变性

    private final String  两者共同作用保证字符串的不可变性;

  • 实现字符串池

    多个字符串的值相同的话,他们指向的是同一个内存地址,可以节省空间,提高效率。

  • 线程安全

    正是字符串不可变,在并发多线程读同一个资源时,不可变对象不能被写,保证了多线程安全,同一个字符串实例可以被多个线程共享;

  • 如果字符串可变,黑客可能通过改变字符串指向对象的值造成安全漏洞

 

 

源码


JDK源码

public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
  //这个value是用来装char的.明白了吧,String其实是char数组的包装类。
  //而这个数组是final类型的,不可能指向别的对象,但是可以改 private final char value[]; /** Cache the hash code for the string */缓存hashCode private int hash; // Default to 0 }

 

String为什么是final的

原文:https://www.cnblogs.com/zhlii/p/14053327.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!