30天C#基础巩固------this,base,string中的方法,StringBuilder性能
这里主要是记录下自己学习笔记,希望有个地方在以后可以看到自己走过的路。
关于之前多态的知识有一个口诀,很好理解里面的override和new,virtual关键字。
“new则隐藏,over重写,隐藏看类型,重写只管新”
面向对象的三大特征:封装,继承,多态。
非面向对象的特征---静态
静态一般的是使用的是方法,很少有字段。
下面是修饰符的图片,关于修饰符这个要在项目中使用,慢慢的理解。
一:this和base的区别。
这两个都是在我们进行开发经常使用的,关于this代表类的本身,我们可以利用它来对类进行设置,取值。而base代表父类,可以为其赋值。
public class Person
{
private string name;
private int age;
private char sex;
public Person(string name,int age,char sex)
{
this.name = name;
this.age = age;
this.sex = sex;
}
//一个参数的CTOR,这里的this代表的是第三个构造函数
public Person(string name):this(name,"男女"[new Random().Next(2)])
{
}
//第三个,这里的this代表的是第一个CTOR
public Person(string name,char sex):this(name,0,sex)
{
}
}
base我们一般在使用父类里面的东西时使用。
二:关于C#中的string
1:构造方法
上面是vs中string类型中的构造函数,这里面都有中文的注释,可以理解。
2:常用属性
索引(Chars) 比如说str[3]:表示的是字符串中第三个字符。其实string里面和就相当于一个数组一样,有下标,我们可以使用索引来处理。
Length;表示字符串的长度。<下标从0开始>
3:常用方法
增加:
-->
public string Insert(int startIndex, string value); // 返回指定字符串在这种情况下插入在指定索引位置的新字符串。
-->
public string Replace(string oldValue, string newValue); //返回一个新字符串,其中当前实例中出现的所有指定字符串都替换为另一个指定的字符串。
-->
Concat()用来连接两个数据(数字,string,int,char等)
string strss = string.Concat(strs,"aaa"); //注意这里的string.Concat();
-->
public static string Join(string separator, params object[] values);//串联字符串数组的所有元素,其中在每个元素之间使用指定的分隔符。 separator:要用作分隔符的字符串。
string[] str = { "111", "222", "333" };
string strss = string.Join("",str); //注意这里的string.Join("",str);把数组中的""去掉分离,合并为一个string类型
Console.WriteLine(strss);
Console.ReadKey();
删除
-->
public string Remove(int startIndex, int count); // 返回指定数量字符在当前这个实例起始点在已删除的指定的位置的新字符串。
string str = "012345";
str=str.Remove(1,2); //删除,从下标1开始数2个删除,余下0345
Console.WriteLine(str);
Console.ReadKey();
-->
string str = "012345";
str = str.Substring(1, 3); //截取字符串从下标为1开始数3个数。
Console.WriteLine(str);
Console.ReadKey();
-->
public string Trim();从当前 System.String 对象移除所有前导空白字符和尾部空白字符。
string str = " 012 34 5 ";
Console.WriteLine(str);
str = str.Trim();
Console.WriteLine(str);
-->
public string PadLeft(int totalWidth, char paddingChar);
string str = "12434";
str = str.PadLeft(10, '0'); //返回一个新字符串,该字符串通过在此实例中的字符左侧填充指定的 Unicode 字符来达到指定的总长度,从而使这些字符右对齐。
Console.WriteLine(str);
str = "12434";
str = str.PadRight(10, '9'); //和上面的一样,只是从右边来填充9
Console.WriteLine(str);
改:
-->
首先ToCharArray(),在Join或Concat或构造函数
查看:
-->
public bool Contains(string value);//返回一个值,该值指示指定的 System.String 对象是否出现在此字符串中。
eg:
string str = "21434";
bool s=str.Contains("7"); //看str中是否有7
Console.WriteLine(s);
-->
public int IndexOfAny(char[] anyOf);//报告指定 Unicode 字符数组中的任意字符在此实例中第一个匹配项的从零开始的索引。
其它:
-->
bool a=string.IsNullOrEmpty(str); //字符串判空
-->
public string[] Split(params char[] separator);// 返回的字符串数组包含此实例中的子字符串(由指定 Unicode 字符数组的元素分隔)。
eg:
我们可以使用Split里面的参数就可以把多余的空格去掉。
现在就把里面的空格去掉了,a里面存取了4个string类型。
-->两个字符串的比较
三:StringBuilder
-->字符串不可变,长期拼接字符串性能较低
eg:通过Stopwatch类来计时;
Stopwatch sw = new Stopwatch(); //提供一组方法和属性,可用于准确地测量运行时间。
sw.Start();
string s="";
for (int i = 0; i < 10000; i++)
{
s+= i.ToString();
}
sw.Stop();
Console.WriteLine(sw.Elapsed); //显示总共使用了多长的时间
Console.ReadKey();
这里要是把10000变为1000000性能就特别底下,时间会特别大。
现在我们换成StringBulider来看看。
Stopwatch sw = new Stopwatch(); //提供一组方法和属性,可用于准确地测量运行时间。
sw.Start();
StringBuilder sb=new StringBuilder(); //设置一个StringBuilder来保存字符串,性能特别好。
for (int i = 0; i <100000; i++)
{
sb.Append(i.ToString());
}
sw.Stop();
Console.WriteLine(sw.Elapsed); //显示总共使用了多长的时间
Console.ReadKey();
这里我换成了100000性能还是这么的6.
30天C#基础巩固------this,base,string中的方法,StringBuilder性能的更多相关文章
- java基础解析系列(一)---String、StringBuffer、StringBuilder
java基础解析系列(一)---String.StringBuffer.StringBuilder 前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现bu ...
- Java09-java语法基础(八)java中的方法
Java09-java语法基础(八)java中的方法 一.方法(函数/过程):是一个程序块,可以完成某种功能 1.java中方法的定义格式 [访问控制修饰符] 返回值类型 方法名(参数列表){ 方 ...
- C++中 string 中的方法的使用详解
string 字符串在所有的语言中都非常重要,c++也不例外,接下来我们将介绍string中的常用方法 1. size() 和 length() 函数 : 他们返回字符串的真实长度,且不会因为空格而截 ...
- java String 中 intern方法的概念
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...
- String中concat方法小记
介绍String中的concat方法使用: 日常开发中,经常对字符串进行处理,之前碰到多个字符串拼接,要么使用stringBuilder,要么使用StringBuffer,再或者是直接多个String ...
- String中intern方法的作用
前言 读完这篇文章你可以了解,String对象在虚拟机内存中的存放,intern的作用,这么多String对象的创建到底有什么区别,String 创建的对象有几个!! 正题 先科普几个知识点1.常量池 ...
- Java基础-重写-子类重写父类中的方法后执行情况
代码 public class Test { public static void main(String[] args) { Shape shape = new Circle(); System.o ...
- Javascript ----字符串(String)中的方法
涉及字符串时,常用到的几个方法... --------------------------------------------------------------------------------- ...
- String中重要方法与字段
下列这段代码已全部包含了我要写的String类中重要的字段: //StringMisc.java// This program demonstrates the length, charAt and ...
随机推荐
- Java学习:Annotation注解
Annotation不算常用的技术,早前用它写了一些玩意儿,过了一年又忘干净了,今天写点东西记下来,以备再忘之需. java.lang.annotation,接口 Annotation.对于Annot ...
- javascript 设计模式-----享元模式
四个轮子,一个方向盘,有刹车,油门,车窗,这些词首先让人联想到的就是一辆汽车.的确,这些都是是一辆车的最基本特征,或者是属性,我们把词语抽象出来,而听到这些词语的人把他们想象陈一辆汽车.在代码里面也是 ...
- Dojo动画原理解析
dojo中动画部分分为两部分:dojo/_base/fx, dojo/fx.dojo/_base/fx部分是dojo动画的基石,里面有两个底层API:animateProperty.anim和两个常用 ...
- 【读书笔记】Programming Entity Framework CodeFirst -- 初步认识
以下是书<Programming Entity Framework Code First>的学习整理,主要是一个整体梳理. 一.模型属性映射约定 1.通过 System.Component ...
- java提高篇(十一)-----强制类型转换
在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需 ...
- C#Light v0.007 又一次重大更新
上次给大家介绍过C#Lite是一个小巧的脚本语言,现在C#更加强大了. 下文白色是脚本代码,黑色是VS中的c#代码 目前这段代码已经可以正确执行 这个Vector3的原型如下 添加这个Vector3的 ...
- 达洛克战记3 即将开服! What's New!
历经数个月的开发,达洛克战记3即将全新开服! 剧情: 回归到三大种族起源时期,三大种族并没有像现在三足鼎立.人类一直处于统治地位.但是突然间一群巨人的出现,让人类损失惨重,身为勇者,需要探索巨人背后的 ...
- as3 Loader 加载资源后内存泄露无法释放的问题。
本人用Loader加载外部一个swf.之后unloadAndStop,Flash概要分析发现,内存没有被释放. 网上搜了一大堆文章,要么就是加载bitmapdata之后,自己dispose,要么就是加 ...
- Java处理Radius access-challenge
最近使用 RSA Authentication Manager, 并且与其自带的Radius server整合, RSA的Radius server 配置不太透明, 目前只配成功了PAP方式的验证,C ...
- jsp模仿QQ空间说说的发表
1.在文本域中输入文字(可以不添加) 2.点击添加图片(可以不添加) 3.点击发表 4.发表成功,文字和图片是超链接,点击就可以查看全部内容 5.点击图片查看原图,没有图片则不显示查看原图的超链接 主 ...