**
2021.5.28
**
String类可以被继承吗?为什么呢?
不可以被继承,因为该类被定义成final.
用final定义的原因:
(1) 为了实现字符串池。
(2) 为了线程安全
(3) 保证缓存的HashCode不可变性,提高性能
String类为什么是不可变的对象?
(1)字符串池的实现可以节约很多heap空间,如果String是可变的,指向串池中同一个对象的其他变量值也会发生改变
(2)因为String是不可变的,所以是多线程安全的,同一个字符串实例可以被多个线程共享,因为String的不可变性,线程安全。
(3)String在创建时,Hashcode就被缓存了,不需要重新计算。字符串的不可变性保证了hash码的唯一性