zoukankan      html  css  js  c++  java
  • 读书笔记(一):【你必须知道的.NET】(1):【大话String】

    【大话String】P352

    1.1【记忆】

      1:String对象不以newobj指令创建,而是ldstr指令创建;

      2:两次创建内容相同的String对象可以指向相同的内存地址(保存在托管堆中,相同的只是一个指向托管堆的地址。)

      3:字符串恒等性(Immutability),是指字符串一经创建,就不可改变,对字符串的任何修改不会影响到原来的String对象,而是重新创建String对象,这就可以解析substring方法了;(这样的方法:Insert,Substring,ToUpper等常用方法)

      4:String对象从应用解读体现了值类型语义,而从内存角度实现为引用类型存储,位于托管堆;

      5:恒等性一定程度上,成就了字符串驻留;

      6:CLR内部维护了一个哈希表,来管理其创建的大部分string对象(散列表,这个大部分就包括动态生成的字符串);

      7:string strD = strC + "def",(这个要注意,strD 是动态生成的字符串,好ibuhui被添加到哈希表中维护的);

      8:手动启用字符串驻留:Intern,IsInterned;

      9:Parse可以报异常,TryParse返回out的bool值,Conver为null时不会抛出异常,而是返回0;

      10:string strPath = @"C:\",意思是把引号的内容都当成字符串,这样就不用转义操作了"\";在写正则表达式时经常使用这个;

      11:按值传递和按引用传递(ref与out)(类似于在页面中使用DropDownList,把这个实例传递给后端,在后端直接设值,这个页面的ddl也是会改变的,当要给ddl设置一个树形的时候特别有用,因为很多地方都可能用到这个控件)

    1.2【string和StringBuilder的性能对比】

      1:在写代码的时候一直没有注意过这两者有什么不同,一般都是随着性子写的,一般使用StringBuilder都是使用它的Append和AppendFormat来格式化字符串,其实string也是可以的,所以我一直没有关心过什么时候使用stirng,什么时候使用StringBuilder。

      2:本书给出的建议就是在进行大量循环的时候需要使用StringBuilder。

      3:值得注意的是,在实例化StringBuilder的时候可以传递一个数值作为一个池(个人理解),书里面的描述就是容量,也就是StringBuilder所维护的字符数组的长度,默认的使用是16,可以根据需要来设置该值。

      4:StringBuilder在使用上,最好指定合适的容量值。

    1.3【实践】

      1:Split方法很常用,就是用来分隔包括某个字符的字符串,并返回一个数组;

      2:string s = String.Join(",",chars[]);类似这样的操作,刚好是跟上面的逆运算,用某个字符来组合数组的值,并返回一个字符串;

      3:如果我们不想使用数组,而使用泛型,那就有自己写方法了;

      4:Stepwath可以用来计算执行的时间,在性能测试的时候用得着;

      5:StartsWith,EndsWith,这两个方法很有用,一个很经典的使用就是这样的业务逻辑,我们的系统中一般都有组织获取目录这样的树形结构,而我们在设计数据库的时候通常都是使用字符串来表示这些编码,Code和他的父亲ParentCode,比如[001,0];[001001,001];[001002,001];[001001001,001001];这样的记录,而如果我们要判断两条记录的关系,我们该如何呢?有一个办法就是先判断这两个字符串长度是否相等,如果是,再判断是否相等;如果不是,再通过两个字符串一个个对比,这是一个很笨的方法,我以前就这么笨过,看到这里,你已经猜到可以使用了StartsWith了,靠,代码美观了太多了。

  • 相关阅读:
    java_oop_方法2
    POJ 3276 Face The Right Way(反转)
    POJ 3276 Face The Right Way(反转)
    POJ 2566 Bound Found(尺取法,前缀和)
    POJ 2566 Bound Found(尺取法,前缀和)
    POJ 3320 Jessica's Reading Problem(尺取法)
    POJ 3320 Jessica's Reading Problem(尺取法)
    POJ 3061 Subsequence(尺取法)
    POJ 3061 Subsequence(尺取法)
    HDU 1222 Wolf and Rabbit(欧几里得)
  • 原文地址:https://www.cnblogs.com/gaizai/p/1633702.html
Copyright © 2011-2022 走看看