String 类为什么是final的

1、被final关键字修饰的类是不能被继承的。而String类就是被final修饰的。以下是String类的源码:

public final class String implements java.io.Serializable, Comparable, CharSequence { 
/* String本质是个char数组. 而且用final关键字修饰.
private final char value[]; 
… 
… 

从上我们可以看到String其本质上是一个char数组。char[]用final修饰着,final修饰的字段创建以后就不可改变。

2.这样做的好处:

从设计安全)上讲
1)、确保它们不会在子类中改变语义。String类是final类,这意味着不允许任何人定义String的子类。
换言之,如果有一个String的引用,它引用的一定是一个String对象,而不可能是其他类的对象。 

2)、String 一旦被创建是不能被修改的,因为 java 设计者将 String 为可以共享的

从效率上讲: 

1)、设计成final,JVM才不用对相关方法在虚函数表中查询,而直接定位到String类的相关方法上,提高了执行效率。 
2)、Java设计者认为共享带来的效率更高。

以上采用了别人的总结


你可能感兴趣的:(String 类为什么是final的)