首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

String的对象内容不可改动

2013-11-08 
String的对象内容不可更改但究竟是为什么要这么做呢??如果考虑是如何将String的对象变得immutable,可以查

String的对象内容不可更改

但究竟是为什么要这么做呢?

?

如果考虑是如何将String的对象变得immutable,可以查看javasrc,因为String类的成员变量value,一个char数组,是final类型,一旦初始化后将无法更改。

?

多数的时候解释为,考虑到执行效率上,因为如果一个String实例创建后,比如,”abc”,可以被多个String对象引用,以减少创建的对时间和资源的消耗(可以参考这里获取一些有关String pool的信息),不过今天看到另一种说法,是安全?!

?

假设,有两个用户,user1,user2,分别对应两个属于其个人的隐私文件,file1,file2。两人只能访问其对应的文件,即,user1对应file1,user2对应file2。

?

如果String是可以更改的,那么也就是File类型引用的Stringpath就是一个可以更改的值。试想,user1登陆以后,在试图打开其个人隐私文件之前,这个path对象的value被更改了,改成了file2,那user1在试图开启其个人隐私文件时,看到的就是file2的内容。

?

这只是对如果String是可更改的简单假象,更多的复杂的场景可以考虑,比如多线程的操作。

热点排行