• Net学习日记_基础提高_7


    字符串是个引用类型,特殊的引用类型。

    string 关键字

    String str = new String(); =》 简化 string str = "123";

    1.字符串可以看成一个字符数组。

    2.str.Length表示指定字符串的字符个数。

    3.字符串对象一旦创建,这个字符串就不能被修改了。

    4.创建1个字符串对象的时候,会先去字符串拘留池中寻找是否有相同字符串内容的对象。如果有就直接让变量指向这个对象,若没有,就创立。

    5.如何清理?GC.Collect();字符串一旦创建,不会被GC回收。(其他语言也是这样的哦)

    6.字符串的恒定性:以上内容。

    字符串常用方法

    1.构造方法只能传递字符数组。

    2.Length属性代表字符的个数

    3.string.Empty代表1个空的字符串;“”强调不是指null;

    4.string.Compare(s1,s2);比较两字符串的大小。

    5.string.Concat(s1,s2);连接两字符串。

    6.Contains方法,判断指定的串里面是否包含指定的子串。

    7.判断指定的字符串是否已指定的字符结尾    str.EndWith("!");

    8.Equals方法,判断指定字符串的内容是不是与指定的串相同

    9.Format(String, Object)格式化字符串

    string str = string.Format(" 我爱{0},你爱{1}","你","他");

    10.IndexOf() 返回字符串的索引。

    11.LaseIndexOf();从字符串的结尾往前查,第一次字符串出现的索引。

    12.string str2 = Insert(1,str); 在字符串的指定位置插入字符串。

    13.IsNullEmpty():是用来判断指定的串是不是null,或者string.Empty;

    14.Remove(4):从第4个开始删,保留前面,删除后面

         Remove(1,2):从指定下标删除指定的个数的字符

    15.Replace(str,str2);替换。

    16.Split(',',';'):通过,号分隔字符串,并且用;号分隔,返回数组。

        也可同字符串分隔

       string[] lines = str3.Split(new string[]{"门上"},StringSplitOptions.RemoveEmptyEntries);

    17.Substring(4,3):切割字符串(从第几个开始切,切几个?)

         只传一个,就是将前面的切掉 

    18.ToCharArray() :将字符串转换为字符数组

    19.ToLower():转换为小写

    20.ToUpper():转换为大写

    21.Trim():去掉空格

    StringBuilder

    目的:是为了防止String多次创建类,浪费时间

    仅仅是个类,不能被继承

    SringBuilder sb = new StringBuilder();用来处理我们String类型的

    sb.Append(); 在追加字符串。

    特点:StringBuilder对象是可变的。当改变这个对象的字符串时,不会去新开空间,而是直接改变。

    StringBuilder高效的字符串操作,大批量进行字符串操作时,使用StringBuilder提升性能。

    StringBuilder != String; ToString();

    StringBuilder仅仅是拼接字符串的工具,大多数情况下还需要把StringBuilder转换成String;

    集合ArrayList(动态数组)

     1.0  新增元素 Add;

     1.1 ArrayList内部储存数据的是1个object数组,创建这个类的对象的时候,这个对象的数组的长度为0;

     1.2 调用Add方法加元素的时候,如果第一次增加元素,就会将数组的长度变成4,往数组里加。

     1.3 如果储存数据的数组满了,就会新建1个数组长度是原来的数组的2被,这个数组被原来数组的变量所引用。

     1.4 AddRange方法,添加1个实现IConnection接口的类的对象,数组就实现这个接口。

     1.5 Capacity表示object数组的长度。

     1.6 list[0] = 110; 修改元素的值,可以通过索引器来取值或者修改值

     1.7 遍历。数组元素的个数 Count(),Count()属性代表是动态数组里的元素的个数。

     1.8.删除。Remove(元素值?);可以删除指定的值类型对象、引用类型对象,删除的是第一个。

                     RemoveAt(index);删除指定下标的元素

                     RemoveRange(1,2);从第1个开始删,删2个

          注意:删除后,后面元素会补上。

                    Clear(); 清空动态数组,清空后数组的长度不变。

     1.9 InsertRange() 插入一个数组

    ForEach原理

    1.如果我们的类要是用foreach,则必须实现IEnumerable这个接口

    foreach(int i in list1)

    {

     Console.writeLine(i);

    }

    2.为啥?forEach背后的代码:

    IEnumerator tor  = j.GetEnumerator(); //定义在IEnumerable

    while(tor.MoveNext())

    {

    Console.WritleLine(tor.Current);

    }

    GetEnumerator():这个方法返回1个实现了IEnumerator接口的对象。

    3.所以我们要实现IEnumerable这个接口中的GetEnumerator()的话,就要写1个类来实现IEnumerator接口。并在GetEnumerator()方法中返回这个类的实例。

    4.IEnumerator接口定义1个Current只读属性,MoveNext方法, Reset方法

    5.MoveNext方法的作用,将指针向前移动一位,并判断当前位是否有元素,如果有返回true;没有返回false

    6.Current只读属性,得到当前指针指向的值。

    7.这两个方法都是操作指针在数组上移动,数组在集合类中。所以想办法将集合类中的数组传递到当前迭代器类中。

    8.迭代器对象在集合类中创建,所以可以通过构造函数让集合将他的数组传递给迭代器,这时候迭代器对象中已经有了数组的引用。

    9.实现MoveNext方法,声明index变量,用来保存当前指针指向的数组的索引,默认是-1.

       每调用一次这个方法,指针就向前移动一位,所以index++;

       判断数组【index】这个元素是否存在。  index<Count时候就存在。

       所以迭代器对象还需要知道元素的有效个数,通过构造函数传入。

    10.实现Current属性,

       直接返回指针指向的数据  return arr[index];

    IEnumerator里面有三个抽象类

    1.Current(): 返回当前指针指向的元素的值

    2.MoveNext():是将指针向前移动1位,并判断当前位有没有元素

    3.Reset();

    集合Hashtable

    table(key,string):键值对

    改值要通过key确定。

    删除要通过key确定。

    Remove(“小明”);

    Clear();

    遍历

    table.Keys 保存了所有键的集合

    foreach(object obj in table.Keys)

    {

      Console.Writrline(table[obj]);

    }

    如果直接遍历Hashtable,每一个遍历项都是一个DictionaryEntry对象里的key和Value属性保存了每一个键值

    foreach(Object obj in table)

    {

      DictionaryEntry en = (DictionaryEntry) obj;

      Console.WriteLine(en.Key);

    }

    table.Values 保存了所有值的集合。可以直接遍历

    table.Contains 是否包含特定的键。

    table.ContainsValue是否包含特定的值

    Count()哈希表中元素的个数。

  • 相关阅读:
    Centos7安装dockercompose
    windows环境下python2和python3版本的切换
    移动硬盘无法读取分区表修复RAW格式修复
    网络与信息安全初探
    MyBatis下在插入数据时获得MySQL自增长序列的值
    CentOS7下mongodb忘记密码后重置密码
    url中有空格等特殊字符及中文字符处理
    通过linux mail实现网站存活监控告警通知
    如何通过SecureCRT转发功能实现外网访问内网服务
    java转JSON串的几种方式
  • 原文地址:https://www.cnblogs.com/lisong-home/p/7673927.html
Copyright © 2020-2023  润新知