• C#中字符串的处理,对象的引用及继承(Tenth day)


    又进入到了新的一周,现在到总结的时间了,继续为大家总结一下今天在云和学院所学的知识。

    理论:

    StringBuilder 和 String 的区别
       String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String;
     如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。
    对象的引用
    int、decimal、bool、double byte 枚举结构等类型(值类型)是传递拷贝;对象(引用类型)则是传递引用。
    方法间传递对象  String  引用类型  数组   类

    结构如果写构造函数  那么就要把结构中所有的字段全部赋值

    如果在结构中写了构造函数,那么 默认的构造函数还有,和类不同

    在类中写了有参数的构造函数 ,无参数的构造函数直接被干掉了

    并且  在类中的构造函数中 可以 不用把所有字段都赋值

    值类型和引用类型的区别
    1.将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
    2.值类型不可能派生出新的类型:所有的值类型均隐式派生自 System.ValueType。但与引用类型相同的是,结构也可以实现接口。
    3.值类型不可能包含 null 值:
    4.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
     
    堆和栈的区别
    栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存中。
    堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。

    实操
    StringBuilder的运用

    接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。"abc"→"cba"

      接收用户输入的一句英文,将其中的单词以反序输出。"hello c sharp"→"sharp c hello"

    从Email中提取出用户名和域名

    文本文件中存储了多个文章标题、作者,标题和作者之间用若干空格(数量不定)隔开,每行一个,标题有的长有的短,输出到控制台的时候最多标题长度10,如果超过10, 则截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字。

    分别写一个Teacher类和一个Student的类(继承的运用)

    首先定义一个父类Person

    在分别定义Teacher类和Student类

    在Main函数里调用方法

    好了,今天就先写到这里了,明天再继续吧...加油!

  • 相关阅读:
    java项目配置域名(tomcat直接配置 or 使用nginx反向代理)
    java爬虫学习
    python爬虫
    log4j的日志级别(ssm中log4j的配置)
    Python中list,tuple,dict,set的区别和用法
    [转]C# Eval在asp.net中的用法及作用
    【转】一个运维经理的运维经验总结
    [转]使用 LVS 实现负载均衡原理及安装配置详解
    [转]33个网站足以使你成为一个天才
    搜狐邮箱想说爱你不容易!
  • 原文地址:https://www.cnblogs.com/ysaw/p/4104300.html
Copyright © 2020-2023  润新知