把String类设计成final,主要是为了“效率” 和 “安全性” 的缘故。
String和其他基本类型不同,他是个对象类型.既然是对象类型,如果是在静态方法下是必须调用静态方法或值的,如果是非静态的方法,就必须要实例化,而main函数是个static的,所以String能像其他的基本类型一样直接被调用,这就是为什么在main函数下使用String类型不会报告错误的原因。
带有final修饰符的类是不可派生的。如果指定一个类为final,则该类所有的方法都是final。
Java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关),这能够提高性能。
若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。 |