Java 基础知识 - String 为什么是不可改变的

       String字符串不可改变,查阅了很多资料,本人感觉《Java经典实例(第二版)》.达尔文著书中说的很好,在这本书中对String字符串不可改变的问题做如下论述:

       字符串的不变性是Java虚拟机的一个基本特征。Java是一种基于多线程的语言,并且还要提供良好的安全性。Java的Applet被禁止访问很多的本地资源。假设这样一种情况:线程A启动了线程B。线程A创建了一个包含文件名的字符串,命名为s,同时,为该字符串另设引用s2。这时,将s传给需要权限的某种方法。假如已经载入该方法(例如:它存在于Java的Applet运行环境中),它一定会使用Java虚拟机的SecurityManager对象。由SecurityManager对象认可对指定文件的访问,如果获得认可,该方法就可以通过I/O系统打开文件。就在这两项工作之间的瞬间,线程B修改了s2所引用的字符串,使其引用一个系统文件。如果是这样的话,那么Java的整个安全机制就成了天方夜谭了。实事上,这是无法做到的。虽然你可以分配任何新的String对象引用给s,但对s所引用的字符串却没有任何影响。此外,如果s只是该String对象的唯一引用,那么这将有利于垃圾回收。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值