java中String类为什么要设计成final?
-
设计成final防止是为了防止被继承
-
设置成final更安全,Sting是引用数据类型,final使String不会被改变
public class StringTest { public static void main(String[] args) { String s = "111"; StringBuilder stringBuilder = new StringBuilder("111"); changeString(s); changeStringBuilder(stringBuilder); System.out.println(s);// 111 System.out.println(stringBuilder);// 111222 } public static void changeString(String s){ s += "222"; } public static void changeStringBuilder(StringBuilder stringBuilder){ stringBuilder.append("222"); } }
如上例子直接在传入参数加入"222",程序员本意不是更改String的值,所以String不可变安全性就提现出来了
-
效率更高
String str1 = "111222"; String str2 = "111222"
如上例子str1和str2都指向内存中的同一地址,如果String是可变的,str1改变str2也会随之变化了
参考地址:https://www.zhihu.com/question/31345592