您的位置:网站首页 > Java软件 > 正文

java程序员实例教学:为什么String在Java中是不可变的?

类别:Java软件 日期:2018-10-26 2:53:34 人气: 来源:

  眼皮跳吉凶

  String在Java中是不可变的。一个不可变的类只是一个其实例不能被修改的类。创建实例并且无法修改信息时,会初始化实例中的所有信息。不可变类有很多优点。本文总结了为什么String设计是不可变的。本文从内存,同步和数据结构的角度阐述了不变性概念。

  字符串池(String intern pool)是方法区域中的特殊存储区域。当创建一个字符串时,如果该字符串已经存在于池中,则将返回现有字符串的引用,而不是创建新对象。

  Java中经常使用字符串的哈希码。例如,在HashMap或HashSet中。不可变的哈希码总是相同的,这样它就可以兑现而不必担心变化。这意味着,每次使用时都不需要计算哈希码。这样更有效率。

  在这个例子中,如果String是可变的,它的值可以被改变,这会违反set的设计(set包含不重复的元素),的例子仅用于演示目的,value实际字符串类中没有字段。

  字符串被广泛用作许多Java类的参数,例如网络连接,打开文件等。字符串不是不可变的,连接或文件将被改变,这可能导致严重的安全。该方法认为它连接到一台机器,但没有。由于参数是字符串,可变字符串也可能在反射中导致安全问题。

  总之,String出于效率和安全的原因,它被设计成不可变的。这也是为什么在许多情况下一般首选不可变类的原因。

  

关键词:java程序实例
0
0
0
0
0
0
0
0
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved