下载此文档

为什么Java要把字符串设计成不可变的-Java开发Java经验技巧.doc


文档分类:IT计算机 | 页数:约3页 举报非法文档有奖
1/3
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/3 下载此文档
文档列表 文档介绍
为什么Java要把字符串设计成不可变的-Java开发Java经验技巧.doc:..为什么Java要把字符串设计成不可变的-编程开发技术为什么Java要把字符串设计成不可变原文出处:Hollis(***@Hollis_Chuang)String是Java屮一个不可变的类,所以他一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不能被修改。不可变类有很多优势。本文总结了为什么字符串被设计成不可变的。将涉及到内存、同步和数据结构相关的知识。字符串池字符串池是方法区中的一部分特殊存储。当一个字符串被被创建的时候,首先会去这个字符串池屮查找,如果找到,直接返回对该字符串的引用。下面的代码只会在堆中创建一个字符串Stringstringl="abed";Stringstring2=〃abcd〃;F面是图水:如果字符串可变的话,当两个引用指向指向同一个字符串时,对其中一个做修改就会影响另外一个。(请记住该影响,有助于理解后面的内容)缓存HashcodeJava中经常会用到字符串的哈希码(hashcodc)□例如,在IlashMap中,字符串的不可变能保证其hashcode永远保持一致,这样就可以避免一些不必要的麻烦。这也就意味着每次在使用一个字符串的hashcode的时候不用重新计算一次,这样更加高效。在String类中,有以下代码:privateinthash;//,因为String类不可变,所以一旦对象被创建,该hash值也无法改变。所以,每次想要使用该对象的hashcode的吋候,直接返回即口J。使其他类的使用更加便利在介绍这个内容之前,先看以下代码:HashSet<String>set二newHashSet<String>();(newString(〃a〃));(newString(〃b〃));(newString(〃c〃));for(Stringa:set)=a;在上而的例子小,如果字符串可以被改变,那么以上用法将有可能违反Set的设计原则,因为Set要求其屮的元索不可以重复。上面的代码只是为了简单说明该问题,其实String类

为什么Java要把字符串设计成不可变的-Java开发Java经验技巧 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数3
  • 收藏数0 收藏
  • 顶次数0
  • 上传人pppccc8
  • 文件大小52 KB
  • 时间2019-01-17