1、 字符串池的需要
字符串池(字符串内部池) 是在方法区域的特殊区域。当一个string被创建如果这个string已经在内存里面存在了,那个存在的string的引用被返回,而不是创建个新的对象和返回它的引用。
下面的代码将在堆上创建一个string对象。
2、 安全
String 在很多java的类中,网络连接中,打开的文件中经常被作为参数使用。如果String是可以改变的,一个连接或者文件将有可能被改变,这将导致严肃的安全威胁。这个方法认为它正连接到一个机器,但是实际上不是。易变的strings将在反射或者作为参数将导致安全问题。
下面是代码实例:
3、 缓存HashCode
在Java中,string的Hashcode经常被用。举个例子,在HashMap中。保持不变,可以保证总是返回相同的HashCode。所以它可以被缓存而不用担心被改变。 这意味这不需要在使用的时候每次都计算HashCode。
这将更高效。