String的对象内容不可更改

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

 

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

 

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

 

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

 

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

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值