主要是为了”安全性“和”效率“的缘故
1、由于String类不能被继承,所以就不会被修改,这就避免了因为继承引起的安全隐患;
2、String类在程序中出现的频率比较高,如果为了避免安全隐患,在它每次出现时都用final来修饰,这无疑会降低程序的执行效率,所以干脆直接将其设为final一提高效率;
常量池的使用,大量使用字符串之后,可以共享字符串的内容,提高效率,节省存储空间
博文参考:
[url=http://www.cnblogs.com/hellowhy/p/6536590.html]String类为什么是final的?[/url]
使String可以像其他基本数据类型一样可以直接使用;
作为一个对象,在main方法中调用时不需要new 新的对象,通过句柄访问方法也不需要声明为static 的,来调用类的方法;
假设不是final的,
String2 extends String
String2 s 也可以声明字符串对象,不合规
main(String2 [] args) 编译不过
[url=http://www.cnblogs.com/ikuman/archive/2013/08/27/3284410.html]String类为什么是final[/url]
1、由于String类不能被继承,所以就不会被修改,这就避免了因为继承引起的安全隐患;
2、String类在程序中出现的频率比较高,如果为了避免安全隐患,在它每次出现时都用final来修饰,这无疑会降低程序的执行效率,所以干脆直接将其设为final一提高效率;
常量池的使用,大量使用字符串之后,可以共享字符串的内容,提高效率,节省存储空间
博文参考:
[url=http://www.cnblogs.com/hellowhy/p/6536590.html]String类为什么是final的?[/url]
使String可以像其他基本数据类型一样可以直接使用;
作为一个对象,在main方法中调用时不需要new 新的对象,通过句柄访问方法也不需要声明为static 的,来调用类的方法;
假设不是final的,
String2 extends String
String2 s 也可以声明字符串对象,不合规
main(String2 [] args) 编译不过
[url=http://www.cnblogs.com/ikuman/archive/2013/08/27/3284410.html]String类为什么是final[/url]