1.不变性
当一个对象需要被多个线程共享,且访问频繁时,可以省略同步和锁等待的时间,从而大幅度提高系统性能。
2.针对常量池的优化
当两个String对象拥有相同的值时,他们只引用常量池中的同一个对象拷贝。
String str1 = "abc";
String str2 = "abc";
String str3 = new String("abc");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false
System.out.println(str1 == str3.intern()); // true
intern()方法返回了String对象在常量池中的引用。
3.类的final定义。