序言

字符串不可变性,字符串的‘暂存池’两个特性

字符串是引用类型,程序中会存在大量的字符串对象,如果每次都创建一个字符串对象,会比较浪费内存、性能低,因此CLR做了“暂存池”(拘留池,缓冲池,暂存池),在一些情况下对于字符串对象进行了重用。

string s1 = "rupeng";
string s2 = "rupeng";
string s3 = "ru" + "peng";
string s4 = new string(s1.ToCharArray());
string s5 = new string(new char[]{'r','u','p','e','n','g'});
Console.WriteLine(Object.ReferenceEquals(s1,s2));
Console.WriteLine(Object.ReferenceEquals(s1, s3));
Console.WriteLine(Object.ReferenceEquals(s1, s4));
Console.WriteLine(Object.ReferenceEquals(s1, s5));
Console.WriteLine(Object.ReferenceEquals(s4, s5));

面试题:上面的代码有几个字符串对象。答案:三个字符串对象s1、s2、s3是同一个字符串对象,在内容相同的情况下只有new才能产生一个新的字符串对象。

资料

最新文章

  1. 浅析/dev/shm
  2. GCD-两个网络请求同步问题
  3. 【代码笔记】iOS-通过颜色来生成一个纯色图片
  4. NHibernate简单使用介绍
  5. inuit.css – 基于 Sass 的强大,可扩展的 CSS 框架
  6. Microsecond and Millisecond C# Timer[转]
  7. javascript作用域(Scope),简述上下文(context)和作用域的定义
  8. Mac修改用户名
  9. UNIX V6内核源码剖析——unix v6 全貌
  10. CodeForces - 445A - DZY Loves Chessboard解题报告
  11. 3p
  12. Android项目外接高德地图代码混淆注意事项
  13. 如何解决wamp中数据库读取数据是???的情况?
  14. React入门实例教程
  15. mongodb系列之---副本集配置与说明
  16. 配置(迁移)Laravel的注意事项
  17. zuoye
  18. MultipartFile实现文件上传
  19. Qt贴图实现地图标记效果
  20. LeetCode——6. ZigZag Conversion

热门文章

  1. T100——英文版凭证报表
  2. 怎样理解NodeList的动态集合与静态集合
  3. stuff拼接字符串
  4. C#Socket发16进制以及进制转换
  5. Facebook 一个热搜帖,美国一个老人癌症不治最后的心愿是跟儿子喝啤酒。
  6. [Scala] java使用scala的jar包问题:Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Short
  7. Struts配置文件
  8. 记录-Intellij Idea下以Tomcat运行Web项目时的位置问题
  9. linux--mysql 8.0.16--裸机安装
  10. python 3.4.3 安装pygame